在iOS中,标签栏swith不会重新加载已加载的页面。但是在颤抖的情况下,当您单击该选项卡时它将重新加载。在搜索了许多网站之后,我得到了使用AutomaticKeepAliveClientMixin的解决方案。但这不起作用。
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
return CupertinoTabScaffold(
tabBar: CupertinoTabBar(items: [
BottomNavigationBarItem(icon: Icon(Icons.home), title: Text('Home')),
BottomNavigationBarItem(icon: Icon(Icons.star), title: Text('Star')),
BottomNavigationBarItem(
icon: Icon(Icons.settings), title: Text('Settings')),
]),
tabBuilder: (context, index) {
return CupertinoTabView(
builder: (context) {
switch (index) {
case 0:
return Text1();
case 1:
return Text2();
case 2:
return Text3();
default:
return Text1();
}
},
);
},
);
}
}
class Text1State extends State<Text1> with AutomaticKeepAliveClientMixin{
@override
void initState() {
super.initState();
print('initState text1');
}
@override
void deactivate() {
super.deactivate();
print('deactivate text1');
}
@override
void dispose() {
super.dispose();
print('dispose text1');
}
@override
Widget build(BuildContext context) {
print('build text1');
super.build(context);
return Center(
child: Text('text1'),
);
}
@override
bool get wantKeepAlive => true;
}
先点击所有三个标签,然后在我点击tab1时显示
flutter: build text1
flutter: build text2
flutter: build text3
它会看到所有选项卡页再次重建。因此,如何禁止重建页面已像iOS标签栏一样加载。 谢谢。