Я использую динамические ссылки Firebase c, а также именованные маршруты. Я хочу установить глобальный прослушиватель динамических событий c link и переслать страницу регистрации, если указан токен. В приведенном ниже коде я получил исключение The context used to push or pop routes from the Navigator must be that of a widget that is a descendant of a Navigator widget.
, которое означает, что я должен поместить код навигации ниже свойства home:
MaterialApp. Но при этом мне пришлось реализовать динамический обработчик событий c links для маршрута earch.
class MyApp extends StatelessWidget {
String title = "Framr";
@override
Widget build(BuildContext context) {
FirebaseDynamicLinks.instance.onLink(
onSuccess: (linkData) {
if (linkData != null) {
try {
Navigator.pushNamed(context, '/register', arguments: linkData);
// throws: The context used to push or pop routes from the Navigator must be that of a widget that is a descendant of a Navigator widget.
} catch(e) {
print(e);
}
}
return null;
}
);
return MaterialApp(
title: "...",
home: LoginPage(),
routes: {
'/createEvent': (context) => CreateEventPage(),
'/showEvent': (context) => ShowEventPage(),
'/register': (context) => RegisterPage(),
},
);
}
}