【发布时间】:2021-08-30 10:27:36
【问题描述】:
我希望在最终用户使用时间选择器选择它的特定时间显示通知。我对如何做到这一点的过程感到困惑。请指导我解决这个问题。
从模型中获取变量:
late var selectedTime = TimeOfDay.now();
用户从前端选择时间:
Future<Null> selectTime (BuildContext context) async{
picked = (await showTimePicker(
context: context,
initialTime: model.selectedTime,
))!;
if (picked != null){
setState(() {
model.selectedTime = picked;
this.preferences?.setString("dateValue", model.selectedTime.format(context));
});
}
}
Widget build(BuildContext context) {
return Scaffold(
resizeToAvoidBottomInset: false,
body: Container(
child: GestureDetector(
onTap: (){
selectTime(context);
},
child: Text(
'${this.preferences?.getString("dateValue") ?? model.defaultTime.format(context)}',
),
),
这个类单独包含通知。
final FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin =
FlutterLocalNotificationsPlugin();
final mymodel = myModel();
Future<void> firstNotifications() async{
var initializationSettingsAndroid =
AndroidInitializationSettings('@mipmap/ic_launcher');
var initializationSettings = InitializationSettings(
android: initializationSettingsAndroid);
flutterLocalNotificationsPlugin.initialize(initializationSettings);
const AndroidNotificationDetails firstNotificationSpecifics =
AndroidNotificationDetails(
'channel id',
'channel name',
'channel description',
sound: RawResourceAndroidNotificationSound('song1'),
playSound: true,
enableVibration: false ,
visibility: NotificationVisibility.secret,
autoCancel: true,
timeoutAfter:7000
);
const NotificationDetails firstNotificationPlatformSpecifics =
NotificationDetails(android: firstNotificationSpecifics);
await flutterLocalNotificationsPlugin.zonedSchedule
(1, null, null, tz.TZDateTime.now(tz.local).add(Duration(seconds: 5)), firstNotificationPlatformSpecifics,
uiLocalNotificationDateInterpretation: UILocalNotificationDateInterpretation.absoluteTime,
androidAllowWhileIdle: true);
}
但是现在这个代码在我手动给出的 5 秒后播放通知。但我希望在用户选择的时间显示通知。
【问题讨论】:
标签: android flutter dart flutter-dependencies dart-pub