提问人:Iliya Melishev 提问时间:11/14/2023 更新时间:11/14/2023 访问量:17
Flutter BLOC 导航 onGenerateRoute 在状态到达之前触发
Flutter BLOC navigation onGenerateRoute firing before state arrives
问:
我正在构建我的材料应用程序并使用 languageBloc 来收听事件。 如果所选位置为空,我想导航到 SelectLocationPage(); 从那里,我从下拉列表中选择一个位置,并在 change 事件中触发选定的语言事件。
它可以工作,我可以 Print() 状态并查看所选语言 但是 onGenerateRoute 已经完成了路由的切换。
Widget buildApp(String language, String location) {
return BlocBuilder<LanguageBloc, LanguageState>(
builder: (languageContext, languageState) {
return BlocBuilder<LocationBloc, LocationState>(
builder: (locationContext, locationState) {
if(locationState is LocationReadyState) {
location = locationState.selectedLocation;
print('selected location ${locationState.selectedLocation}'); ==> **fires second **
}
return MaterialApp(
title: 'Courses',
locale: _getLocale(languageState, language),
localizationsDelegates: const [
AppLocalizations.delegate,
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
],
supportedLocales: const [
Locale('en'),
Locale('he'),
Locale('ru'),
],
initialRoute: '/',
onGenerateRoute: (settings) {
return getPageForRouteName(settings, location);
},
);
},
);
},
);
}
PageRouteBuilder getPageForRouteName(RouteSettings settings, String location) {
print('onGenerateRoute location ${location}'); ==> **fires first location is '' **
if (location.isEmpty) {
return _buildPageRoute(SelectLocationPage());
} else {
switch (settings.name) {
case '/home':
return _buildPageRoute(HomePage());
default:
return _buildPageRoute(HomePage());
}
}
}
我正在构建我的材料应用程序并使用 languageBloc 来收听事件。 如果所选位置为空,我想导航到 SelectLocationPage(); 从那里,我从下拉列表中选择一个位置,并在 change 事件中触发选定的语言事件。
它可以工作,我可以 Print() 状态并查看所选语言 但是 onGenerateRoute 已经完成了路由的切换。
答: 暂无答案
评论