首页 > 解决方案 > TabBar 必须在 TabBarView Flutter 之前运行 OnTap

问题描述

我使用 ListView.builder,当点击 TabBar 时它过滤列表,然后在 tabBarView 中显示 ListView.builder 取决于该过滤列表,但它显示错误原因长度在调用 tabBarView 之前未更新。

TabBar(
                          isScrollable: true,
                          controller: _tabController,
                          labelPadding: EdgeInsets.all(12),
                          enableFeedback: true,
                          onTap: (ind) {
                            searchMainInfo.clear();
                            if(ind == 0){
                              searchMainInfo.addAll(billsMainInfo);
                            } else if(ind == 1){
                              searchMainInfo.addAll(billsMainInfo.where((bill) => bill[5] == 1));
                            } else {
                              searchMainInfo.addAll(billsMainInfo.where((bill) => bill[5] == 2));
                            }
                          },
                          tabs: [
                            Container(
                                width: 25.w, alignment: Alignment.center, child: Text('Bills 1')),
                            Container(
                                width: 25.w, alignment: Alignment.center, child: Text('Bills 2')),
                            Container(
                                width: 25.w, alignment: Alignment.center, child: Text('Bills 3'))
                          ],
                        ),

它应该在 onTap 过滤器列表时执行,但在 tabBarView 上发现列表长度不相等。

正文是 ListView.builder,长度来自 searchMainInfo。

TabBarView(
                            controller: _tabController,
                            children: [
                              Body(searchMainInfo),
                              Body(searchMainInfo),
                              Body(searchMainInfo)
                            ],
                          ),

标签: flutterlistviewtabbar

解决方案


推荐阅读