Я использую android_alarm_manager
для отправки уведомлений по расписанию.Push-уведомление работает нормально.Но когда я нажимаю Push-уведомление , он вызывает onSelectNotification()
метод, при котором я печатаю полезные данные push-уведомления, а затем перехожу к новому Widget
.
Здесь успешно печатается Push-уведомление полезная нагрузка, но навигация не работает.Из отладки я вижу:
_globalKey.currentContext имеет значение null
Может кто-нибудь сказать мне, что не так с кодом или есть лучший способ решить эту проблему?
import 'dart:isolate';
import 'package:flutter/material.dart';
import 'package:android_alarm_manager/android_alarm_manager.dart';
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
import 'package:daily_quotes/helpers/second_page.dart';
import 'package:daily_quotes/helpers/local_notification_helper.dart';
final notifications = FlutterLocalNotificationsPlugin();
GlobalKey _globalKey = new GlobalKey();
void pushNotification() async {
showIconNotification(_globalKey.currentContext, notifications,
icon: Image.asset("assets/screen.png"),
title: "Some title",
body: "HelloWorld",
id: 40);
}
Future onSelectNotification(String payload) async {
//This one is getting printed
print("Payload : " + payload);
//But the redirection is not working. As _globalKey.currentContext is null
await Navigator.push(_globalKey.currentContext,
MaterialPageRoute(builder: (context) => SecondPage(payload: payload)));
}
void main() async {
final settingsAndroid = AndroidInitializationSettings('@mipmap/screen');
final settingsIOS = IOSInitializationSettings(
onDidReceiveLocalNotification: (id, title, body, payload) =>
onSelectNotification(payload));
notifications.initialize(InitializationSettings(settingsAndroid, settingsIOS),
onSelectNotification: onSelectNotification);
final int helloAlarmID = 0;
await AndroidAlarmManager.initialize();
runApp(MyApp());
await AndroidAlarmManager.periodic(
const Duration(seconds: 10), helloAlarmID, pushNotification);
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Daily Quotes',
theme: ThemeData(
primarySwatch: Colors.pink,
),
home: CategoryPage());
}
}