AutomaticKeepAliveClientMixin这个Mixin就是Flutter为了保持页面设置的。哪个页面需要保持页面状态,就在这个页面进行混入。
不过使用使用这个Mixin是有几个先决条件的:
- 使用的页面必须是StatefulWidget,如果是StatelessWidget是没办法办法使用的。
- 其实只有两个前置组件才能保持页面状态:PageView和IndexedStack。
- 重写wantKeepAlive方法,如果不重写也是实现不了的
- Scaffold中的bottomNavigationBar,body如下:
body: IndexedStack(
index: currentIndex,//当前的下标
children: tabBodies//子页面的Widget
)
- 然后在要保持状态的子页面混入
class _HomePageState extends State<HomePage> with AutomaticKeepAliveClientMixin {
@override
bool get wantKeepAlive =>true;
}
- 验证:
@override
void initState() {
super.initState();
print('111111111111111111111111111');
}
只会输出一次'111111111111111111111111111'
网友评论