在Flutter中滑动到另一个堆栈时如何保留嵌套的导航器堆栈历史记录

时间:2020-06-27 18:36:03

标签: flutter nested navigator

我用TabBarView制作了TabBar,每个标签都有自己的导航器堆栈 在第一个选项卡的导航器堆栈中导航并在某些时候滑动到另一个选项卡时 并滑回上一个标签,则上一个标签导航器堆栈已重置,就像重新构建一样

如何处理这种情况 我希望每个标签导航器堆栈在滑动到其他标签时都保留其历史记录

1 个答案:

答案 0 :(得分:0)

我已经找到了解决方案,它只是将嵌套的Navigator和一个有状态的小部件包装在一起,并使用mixin AutomaticKeepAliveClientMixin使用有状态的小部件的状态并实现(必须实现的方法) @override bool get wantKeepAlive => true;

如以下示例

 class NotificationsNavigator extends StatefulWidget {
  @override
 _NotificationsNavigatorState createState() => _NotificationsNavigatorState();
}

class _NotificationsNavigatorState extends State<NotificationsNavigator> with 
AutomaticKeepAliveClientMixin {

@override 
bool get wantKeepAlive => true;

  @override
  Widget build(BuildContext context) {
    return new Navigator(
      key: someKey,
      onGenerateRoute: notificationsOnGenerateRoutes,
      initialRoute: '/',
    );
  }

}