我用TabBarView
制作了TabBar
,每个标签都有自己的导航器堆栈
在第一个选项卡的导航器堆栈中导航并在某些时候滑动到另一个选项卡时
并滑回上一个标签,则上一个标签导航器堆栈已重置,就像重新构建一样
如何处理这种情况 我希望每个标签导航器堆栈在滑动到其他标签时都保留其历史记录
答案 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: '/',
);
}
}