В этом уроке мы рассмотрим различные методы создания приложения 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.