ios - 颤振禁止 CupertinoTabView 重建小部件不起作用
问题描述
在iOS中,tabbar swith不会重新加载加载的页面。但是在flutter中它会在你点击tab时重新加载。在搜索了很多网站之后,我得到了一个使用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标签栏一样加载。谢谢你。
解决方案
推荐阅读
- c - 当一切都可以通过寄存器完成时,为什么要减少 %rsp?
- django - Django Query 中的除法
- python - Single shot multi-dimension indexing in torch - perhaps with index_select or gather?
- styled-components - 如何将一个 styled-components 组件的样式应用于另一个?
- python - 我正在尝试使用对象名称发件人生成一个脚本,但它不起作用
- javascript - 如何使用 firstdata - React & node js 付款?
- jmeter - 从相同的标题但不同的 xml 响应中提取数据
- python - 在 Numba 中,如何调用在 GPU 上运行的递归函数?
- ruby - “折叠”一个哈希数组,需要递归吗?
- laravel - 显示在下拉 Laravel 中选择的国家/地区的电话代码