颤抖禁止CupertinoTabView重建小部件不起作用

时间:2020-06-24 09:44:24

标签: ios flutter

在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标签栏一样加载。 谢谢。

0 个答案:

没有答案