flutterでflutter_local_notificationsプラグインを使用し、ローカル通知機能を作成しようとしています。
現状、以下のような実装を行い、毎日指定した時間に通知が出てくるところまで作成することができました。
しかし、指定した時間にAPIを叩いて、APIの取得結果を通知に載せたいと考えていますが、実現方法がわからずに困っています。
お助けいただければ幸いです。
対象の処理のソースコード
①initStateでnotificationの初期化
Dart
1void initState() { 2 super.initState(); 3 getSharedPreference(); 4 5 //notification start 6 var initializationSettingsAndroid = 7 AndroidInitializationSettings('app_icon'); 8 var initializationSettingsIOS = new IOSInitializationSettings( 9 onDidReceiveLocalNotification: onDidRecieveLocalNotification); 10 var initializationSettings = new InitializationSettings( 11 android: initializationSettingsAndroid, iOS: initializationSettingsIOS); 12 flutterLocalNotificationsPlugin = new FlutterLocalNotificationsPlugin(); 13 flutterLocalNotificationsPlugin!.initialize(initializationSettings); 14 15 //notification end 16 }
②通知のレイアウト、毎日スケジュール実行するための設定等
以下のbody2変数の値をAPIからの結果に書き換えて通知を送りたいと考えています。
しかし、毎日実行される通知処理は、flutterLocalNotificationsPlugin!.showDailyAtTime(・・・
だけが実行されているからか、これの外側にbody2の書き換え処理を用意しても変更がされませんでした。
どこの書くのが正しいか、どこに書くと書き換え後の通知が送れるかをお教えいただきたいです。
Dart
1Future onDidRecieveLocalNotification( 2 int id, String? title, String? body, String? payload) async { 3 await showDialog( 4 context: context, 5 builder: (BuildContext context) => CupertinoAlertDialog( 6 title: Text(title!), 7 content: Text(body!), 8 actions: [ 9 CupertinoDialogAction( 10 child: Text("ok"), 11 isDefaultAction: true, 12 onPressed: () async {}, 13 ) 14 ], 15 )); 16 } 17 18String body2 = "body2"; 19 20Future _showNotification() async { 21 _deleteSchedular(); 22 var time = new Time(hour, minutes, 0); 23 var androidPlatformChannelSpecifics = new AndroidNotificationDetails( 24 'your channel id', 'your channel name', 'your channel description', 25 importance: Importance.max, priority: Priority.high); 26 var iOSPlatformChannelSpecifics = new IOSNotificationDetails(); 27 var platformChannelSpecifics = new NotificationDetails( 28 android: androidPlatformChannelSpecifics, 29 iOS: iOSPlatformChannelSpecifics); 30 31 await flutterLocalNotificationsPlugin!.showDailyAtTime( 32 0, 33 'Timer', 34 body2, 35 time, 36 platformChannelSpecifics, 37 payload: 'Default_Sound', 38 ); 39 }
よろしくお願いしますλ。
あなたの回答
tips
プレビュー