Roh*_*ala 5 dart flutter flutter-web flutter-go-router
我正在我的网络应用程序中通过 go router 进行导航。但我在更改屏幕时遇到的问题是,当我第一次打开特定屏幕时,它会使用 InitState() 构建整个屏幕,但在转到另一个屏幕后,我再次单击该屏幕,然后它不会重建(意味着不运行 initState())。我也附上了我的代码片段。
final routerProvider = Provider<GoRouter>((ref) {
final loggedInState = ref.read(isLoggedInProvider);
return GoRouter(
refreshListenable: loggedInState,
routes: [
HomeRoute(), // /
PeopleRoute(), // /people
LoginRoute(),
],
redirect: (state) {
// if the user is not logged in, they need to login
final loggedIn = loggedInState.value;
final loggingIn = state.subloc == '/login';
if (!loggedIn) return loggingIn ? null : '/login';
// if the user is logged in but still on the login page, send them to
// the home page
if (loggingIn) return '/';
// no need to redirect at all
return null;
},
);
});
class HomeRoute extends GoRoute {
HomeRoute()
: super(
path: '/',
pageBuilder: (context, state) => const NoTransitionPage(
child: HomeScreen(),
),
);
}
class LoginRoute extends GoRoute {
LoginRoute()
: super(
path: '/login',
pageBuilder: (context, state) => const NoTransitionPage(
child: LoginScreen(),
),
);
}
class PeopleRoute extends GoRoute {
PeopleRoute()
: super(
path: '/people',
pageBuilder: (context, state) => const NoTransitionPage(
child: PeopleLandingScreen(),
),
);
}
Run Code Online (Sandbox Code Playgroud)
导航代码。
context.go('/people');
Run Code Online (Sandbox Code Playgroud)
我们将不胜感激您的帮助。
| 归档时间: |
|
| 查看次数: |
2039 次 |
| 最近记录: |