我正在开发一个 flutter 应用程序。我已经在应用程序中使用命名路由设置了路由器。转到我的主页时,它显示为 locahost:1234/#/home。并且路径是正确的。但从那里导航回上一页时,它仍然显示相同的路径 locahost:1234/#/home。返回时路径 url 不会改变。如果有人有想法吗? 我的路由器文件如下:
/* ADD REPOSITORY TO APP ROUTER */
/* ADD REPOSITORY TO APP ROUTER */
Repository repository;
AppRouter() {
repository = new Repository(apiService: ApiService());
}
Route generateRoute(RouteSettings settings) {
switch (settings.name) {
case "/":
return MaterialPageRoute(
settings: RouteSettings(name: '/'),
builder: (_) => MultiBlocProvider(providers: [
BlocProvider<HomeCubit>(
create: (BuildContext context) {
return HomeCubit(repository: repository);
},
),
BlocProvider<SearchCubit>(
create: (BuildContext context) =>
SearchCubit(repository: repository),
),
BlocProvider<UserCubit>(
create: (BuildContext context) {
return UserCubit(repository: repository);
},
)
], child:userToken==null?SplashScreen():NavScreen()
// SplashScreen()
));
case "/getstarted":
return MaterialPageRoute(
settings: RouteSettings(name: '/getstarted'),
builder: (_) => BlocProvider(
create: (BuildContext context) =>
ProfileCubit(repository: repository),
child: OnboardingScreen()));
//return MaterialPageRoute(builder: (_) => VideoDetailScreen());
case "/register":
return MaterialPageRoute(
settings: RouteSettings(name: '/register'),
builder: (_) => MultiBlocProvider(providers: [
BlocProvider<HomeCubit>(
create: (BuildContext context) {
return HomeCubit(repository: repository);
},
),
BlocProvider<SearchCubit>(
create: (BuildContext context) =>
SearchCubit(repository: repository),
),
BlocProvider<UserCubit>(
create: (BuildContext context) =>
UserCubit(repository: repository),
)
], child: RegisterScreen()));
case '/home':
return MaterialPageRoute(
settings: RouteSettings(name: '/home'),
builder: (_) => BlocProvider(
create: (BuildContext context) =>
HomeCubit(repository: repository),
child: NavScreen()));
case '/signin':
return MaterialPageRoute(
builder: (_) => BlocProvider(
create: (BuildContext context) =>
UserCubit(repository: repository),
child: SigninScreen()),
settings: RouteSettings(name: '/signin'));
default:
return MaterialPageRoute(builder: (_) {
return Scaffold(
body: Center(
child: Text('Error! No route Found...',
style: TextStyle(color: Colors.white,fontWeight:FontWeight.bold),),
),
);
}
);
}
}
}
最佳答案
Just add settings: settings, to MaterialPageRoute
Page url not changing in flutter, but the page content changes fine
关于flutter - 在 flutter web 中导航回上一页时,URL 路径未更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70562761/