首页 > 解决方案 > 颤振禁止 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标签栏一样加载。谢谢你。

标签: iosflutter

解决方案


推荐阅读