Как создать приложение Flutter, которое отображает «Доброе утро», «Добрый день» или «Добрый вечер».

В этом уроке мы рассмотрим различные методы создания приложения Flutter, которое динамически отображает различные приветствия в зависимости от времени суток. Мы рассмотрим несколько подходов, приведя примеры кода для каждого метода. К концу этого руководства вы будете иметь четкое представление о том, как реализовать эту функцию в ваших приложениях Flutter.

Методы:

Метод 1: использование DateTime и Intl Package

В этом методе мы будем использовать класс DateTimeиз библиотеки dart:coreи пакета Intlдля форматирования времени и отображения соответствующего значения. приветствие.

import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final now = DateTime.now();
    final timeFormat = DateFormat('HH:mm');
    final greeting = _getGreeting(now.hour);
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('Greeting App')),
        body: Center(
          child: Text(
            '$greeting, the time is ${timeFormat.format(now)}',
            style: TextStyle(fontSize: 24),
          ),
        ),
      ),
    );
  }
  String _getGreeting(int hour) {
    if (hour < 12) {
      return 'Good Morning';
    } else if (hour < 17) {
      return 'Good Afternoon';
    } else {
      return 'Good Evening';
    }
  }
}

Метод 2: использование плагина FlutterTimeOfDay

Другой подход — использовать плагин FlutterTimeOfDay, который упрощает процесс, предоставляя встроенные функции для получения времени суток и отображения соответствующего приветствия.

import 'package:flutter/material.dart';
import 'package:flutter_time_of_day/flutter_time_of_day.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final now = TimeOfDay.now();
    final greeting = _getGreeting(now);
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('Greeting App')),
        body: Center(
          child: Text(
            '$greeting, the time is ${now.format(context)}',
            style: TextStyle(fontSize: 24),
          ),
        ),
      ),
    );
  }
  String _getGreeting(TimeOfDay time) {
    if (time.hour < 12) {
      return 'Good Morning';
    } else if (time.hour < 17) {
      return 'Good Afternoon';
    } else {
      return 'Good Evening';
    }
  }
}

Метод 3: использование плагина локальных уведомлений Flutter

Если вы хотите отображать приветствие в качестве уведомления, вы можете использовать плагин Flutter Local Notifications, чтобы планировать уведомления с различными приветствиями в зависимости от времени суток.

import 'package:flutter/material.dart';
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  final flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin();
  final initializationSettingsAndroid =
      AndroidInitializationSettings('@mipmap/ic_launcher');
  final initializationSettingsIOS = IOSInitializationSettings();
  final initializationSettings = InitializationSettings(
      android: initializationSettingsAndroid, iOS: initializationSettingsIOS);
  await flutterLocalNotificationsPlugin.initialize(initializationSettings);
  final now = TimeOfDay.now();
  final greeting = _getGreeting(now);
  await flutterLocalNotificationsPlugin.show(
    0,
    greeting,
    'The time is ${now.format(context)}',
    NotificationDetails(
      android: AndroidNotificationDetails(
        'channel id',
        'channel name',
        'channel description',
      ),
      iOS: IOSNotificationDetails(),
    ),
  );
}
String _getGreeting(TimeOfDay time) {
  if (time.hour < 12) {
    return 'Good Morning';
  } else if (time.hour < 17) {
    return 'Good Afternoon';
  } else {
    return 'Good Evening';
  }
}

В этом уроке мы рассмотрели различные методы создания приложения Flutter, которое отображает разные приветствия в зависимости от времени суток. Мы рассмотрели три различных подхода, включая использование пакетов DateTimeи Intl, плагина FlutterTimeOfDay и плагина Flutter Local Notifications. Вы можете выбрать метод, который лучше всего соответствует вашим требованиям, и реализовать его в своих собственных приложениях Flutter.