繁体   English   中英

当我滑动时,我的应用程序正在调用所有 TabBarView 内容

[英]My app is calling all TabBarView contents when I swipe

我的应用程序有问题,问题是我有一个带有 3 个选项卡的应用程序:

@override
  Widget build(BuildContext context) {
    return WillPopScope(
      child: Scaffold(
        body: DefaultTabController(
          length: 3,
          child: _isLoading ? Center(
            child: CircularProgressIndicator()
          ) 
          : Scaffold(
            bottomNavigationBar: Material (
              child: TabBar(
                tabs: <Tab>[
                  Tab(icon: Icon(Icons.add_shopping_cart)),
                  Tab(icon: Icon(Icons.shopping_basket)),
                  Tab(icon: Icon(Icons.person)),
                ],
              ),
              color: Colors.green,
            ),
            body: TabBarView(
              children: [
                ProductListPage(),
                OrderPage(),
                InfoPage(),
              ],
            ),
          ),
        )
      ), 
      onWillPop: onBackPressed
    );
  }

在每个子页面中,我实现了onInit从后端加载数据:

/* The exact same thing in ProductListPage, OrderPage and InfoPage */
@override
  void initState() {
    _isLoading = true;
    onInit().then((value) {
      print('initStateProductList');
    });
    super.initState();
  }

但问题是当我在TabBarView上滑动页面时,我不明白为什么,但有时当我从第一个选项卡滑动到选项卡 3 时,应用程序正在从选项卡 2 调用InitState

在这张图片中,我从 Tab1 滑动到 Tab3

当我从 Tab3 滑动到 Tab1 时,我发现了一个解决方法AutomaticKeepAliveClientMixin但我不喜欢它,因为我每次滑动时都想重新加载。

你正在父母身上实施这个

_isLoading ? Center(
            child: CircularProgressIndicator()
          ) 

把它留给你的孩子,这是标签

 children: [
        ProductListPage(),
        OrderPage(),
        InfoPage(),
      ],

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM