我有这个路由器的代码
final _router = GoRouter(
routes: [
GoRoute(
path: '/',
builder: (BuildContext context, GoRouterState state) {
return const LoginScreenWidget();
},
routes: <RouteBase>[
GoRoute(
path: 'main',
builder: (BuildContext context, GoRouterState state) {
return const MainScreenWidget();
},
routes: [
GoRoute(
path: 'my-friends',
builder: (BuildContext context, GoRouterState state) {
return const FriendsScreenWidget();
},
routes: [
GoRoute(
path: ':userId',
builder: (BuildContext context, GoRouterState state) {
return FriendProfileScreenWidget(
userId: state.params['userId'],
);
},
routes: [
GoRoute(
path: 'friends',
builder: (BuildContext context, GoRouterState state) {
return ProfileFriendsScreenWidget();
},
),
],
),
],
),
],
),
],
),
],
);
class AppRouterDelegate extends GetDelegate {
@override
Widget build(BuildContext context) {
return Navigator(
onPopPage: (route, result) => route.didPop(result),
pages: currentConfiguration != null
? [currentConfiguration!.currentPage!]
: [GetNavConfig.fromRoute('main')!.currentPage!],
);
}
}
在不同的屏幕上,我越走越深。它按照我需要的方式工作。但当我点击后退时,我并没有在历史中后退,而是回到了起点
x一个一个一个一个一个x一个一个二个一个x一个一个三个一个x一个x一个x一个x一个x一个x一个
我怎样才能使它在我们点击后退时,返回到上一页,而不是最初的一页?
后退按钮具有此代码
Navigator.pop(context);
一开始我试着用普通的Navigator,然后用Navigator 2.0,但是不行,然后我找到了这个go路由器,我很喜欢,但是我解决不了最后一个问题
1条答案
按热度按时间jq6vz3qz1#
使用context.push('routeName ')而不是context.go('routeName')。这样应该可以解决问题。