У меня есть класс fcm_service (этот сервис не является виджетом) с моим методом настройки firebase:
firebaseMessaging.configure(onLaunch: (Map<String, dynamic> msg) {
print("onLaunch called");
}, onResume: (Map<String, dynamic> msg) {
print("onResume called");
Navigator.of(context).pop();
}, onMessage: (Map<String, dynamic> msg) {
print("onMessage called : " + msg.toString());
Navigator.of(context).pop();
});
Я хочу быть перенаправлен на мою главную страницу в "onResume", но ничего не происходит.Когда я нажимаю на уведомление, вызывается onResume (печать работает).
Что я пробовал:
Вызов моей страницы как: new MainPage ();
Установка контекста моего родительского виджета в моем классе fcm_service и использование навигатора, как в коде выше.
Возможно ли это дажебыть перенаправленным через этот класс, который не является виджетом?
РЕДАКТИРОВАТЬ:
Вот мой основной класс:
class PreesmApp extends StatefulWidget {
@override
_PreesmAppState createState() => _PreesmAppState();
}
class _PreesmAppState extends State<PreesmApp>{
AuthenticationBloc _authenticationBloc;
final FCMService fcmService = Injector.getInjector().get<FCMService>();
@override
void initState() {
_authenticationBloc = AuthenticationBloc();
_authenticationBloc.dispatch(AppStarted());
super.initState();
fcmService.setContext(context);
}
@override
void dispose() {
_authenticationBloc.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return BlocProvider<AuthenticationBloc>(
bloc: _authenticationBloc,
child: MaterialApp(
supportedLocales: [
const Locale('en', 'EN'),
const Locale('fr', 'BE')
],
localizationsDelegates: [
const DemoLocalizationsDelegate(),
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate
],
localeResolutionCallback:
(Locale locale, Iterable<Locale> supportedLocales) {
for (Locale supportedLocale in supportedLocales) {
if (supportedLocale.languageCode == locale.languageCode ||
supportedLocale.countryCode == locale.countryCode) {
return supportedLocale;
}
}
return supportedLocales.first;
},
debugShowCheckedModeBanner: false,
home: BlocBuilder<AuthenticationEvent, AuthenticationState>(
bloc: _authenticationBloc,
builder: (BuildContext context, AuthenticationState state) {
if (state is AuthenticationUninitialized) {
return SplashScreen();
}
if (state is AuthenticationAuthenticated) {
return DashboardPage();
}
if (state is AuthenticationUnauthenticated) {
return AuthenticationPage();
}
if (state is AuthenticationLoading) {
return LoadingIndicator();
}
},
),
routes: {
'/login': (context) => AuthenticationPage(),
'/dashboard': (context) => DashboardPage(),
'menu': (context) => MenuPage(),
'/kanbanBoard': (context) => KanbanBoardPage(),
'/listBoard': (context) => ListBoardPage(),
'/ganttBoard': (context) => GanttBoardPage(),
'/preesm': (context) => PreesmApp(),
},
theme: ThemeSwitcher.of(context).themeData,
));
}
}
И это мой установщик контекста в fcm_service
setContext(BuildContext c) {
this.context = c;
}