Я использую firebase_dynamic_links 0.5.0 в моем приложении проекта флаттера. Я использую blo c для управления состоянием, и у меня проблема с навигацией. Я обрабатываю ссылку нормально, но когда я пытаюсь перейти на другую страницу, это не работает. Я не знаю почему?
PS: я тестировал пример firebase_dynamic_links , и это нормально работает
main() {
WidgetsFlutterBinding.ensureInitialized();
// Production code
ErrorWidget.builder = (FlutterErrorDetails details) => Container();
runApp(MyApp());
}
// Класс Myapp здесь я получаю результат печать, но навигация не работает
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
final _authBloc = AuthBloc();
final _progressBloc = new ProgressBloc();
@override
void initState() {
super.initState();
initDynamicLinks();
}
void initDynamicLinks() async {
final PendingDynamicLinkData data =
await FirebaseDynamicLinks.instance.getInitialLink();
final Uri deepLink = data?.link;
//print("hhhhhhh" + deepLink.path);
if (deepLink != null) {
print("Link :" + deepLink.path);
// this line don't work
Navigator.pushNamed(context, '/helloworld');
}
FirebaseDynamicLinks.instance.onLink(
onSuccess: (PendingDynamicLinkData dynamicLink) async {
final Uri deepLink = dynamicLink?.link;
if (deepLink != null) {
print("Link :" + deepLink.path);
Navigator.pushNamed(context, '/helloworld');
}
}, onError: (OnLinkErrorException e) async {
print('onLinkError');
print(e.message);
});
}
@override
Widget build(BuildContext context) {
ThemeData themeData = ThemeData(
fontFamily: Constants.DEFAULT_FONT_NAME,
textTheme: Theme.of(context)
.textTheme
.apply(fontFamily: Constants.DEFAULT_FONT_NAME),
brightness: Brightness.light,
canvasColor: Colors.black12,
scaffoldBackgroundColor: Colors.white,
primaryIconTheme:
Theme.of(context).primaryIconTheme.copyWith(color: Colors.white),
accentIconTheme:
Theme.of(context).accentIconTheme.copyWith(color: Colors.white),
primaryTextTheme:
Theme.of(context).primaryTextTheme.apply(bodyColor: Colors.white),
primaryColorLight: Colors.white,
primaryColorBrightness: Brightness.light,
primarySwatch: Constants.COLOR_PRIMARY,
primaryColor: Constants.COLOR_PRIMARY,
);
var home = Stack(children: <Widget>[
RootPage(),
ProgressDialog(),
]);
return ProgressProvider(
dialog: _progressBloc,
child: AuthBlocProvider(
bloc: _authBloc,
child: StoreBlocProvider(
store: Store(),
child: RootProvider(
bloc: new RootBloc(),
child: MaterialApp(
localizationsDelegates: [
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
],
supportedLocales: [
const Locale('en'), // English
const Locale('fr'), // Hebrew
],
title: 'Foodynasty',
theme: themeData,
debugShowCheckedModeBanner: false,
routes: <String, WidgetBuilder>{
'/': (BuildContext context) => home,
'/helloworld': (BuildContext context) => RestaurantShare(
restaurantId: 'test',
),
},
),
),
),
),
);
}
}
спасибо, простите за мой плохой английский