Flutter 颤振调用setState并重建,但UI没有更改?

Flutter 颤振调用setState并重建,但UI没有更改?,flutter,setstate,Flutter,Setstate,这可能是我自己的问题,但我不知道是什么引起的,如何解决 例如: 单击蓝色圆圈按钮,单击它将添加一个选项卡项,但现在单击它将不会响应 联机代码: 这是我使用TabBar和TabBarView可以走多远。它不是可定制的 import 'package:flutter/material.dart'; void main() { runApp( MaterialApp( home: MainPage(), debugShowCheckedModeBanner: fa

这可能是我自己的问题,但我不知道是什么引起的,如何解决

例如: 单击蓝色圆圈按钮,单击它将添加一个选项卡项,但现在单击它将不会响应

联机代码:


这是我使用
TabBar
TabBarView
可以走多远。它不是可定制的

import 'package:flutter/material.dart';

void main() {
  runApp(
    MaterialApp(
      home: MainPage(),
      debugShowCheckedModeBanner: false,
    ),
  );
}

class MainPage extends StatefulWidget {
  @override
  _MainPageState createState() => _MainPageState();
}

class _MainPageState extends State<MainPage> with TickerProviderStateMixin {
  TabController _tabController;

  List<String> _tabs = ["TAB_0"];

  @override
  void initState() {
    _tabController = TabController(vsync: this, length: _tabs.length);
    super.initState();
  }

  void _addTab() {
    setState(() {
      _tabs.add("TAB_${_tabs.length}");
      _tabController.dispose();
      _tabController = TabController(vsync: this, length: _tabs.length);
    });
  }

  @override
  Widget build(BuildContext context) {

    return Scaffold(
      body: NestedScrollView(
        headerSliverBuilder: (context, innerScrolled) {
          return <Widget>[
            SliverAppBar(
              title: Text("Demo"),
              floating: false,
              pinned: false,
              actions: <Widget>[
                IconButton(
                  icon: Icon(Icons.add),
                  onPressed: _addTab,
                )
              ],
              bottom: TabBar(
                controller: _tabController,
                isScrollable: true,
                indicatorSize: TabBarIndicatorSize.label,
                tabs: _tabs
                    .map((tab) => Row(
                      children: <Widget>[
                        Tab(
                              text: tab,
                            ),
                      ],
                    ))
                    .toList(),
              ),
            ),
          ];
        },
        body: TabBarView(
          controller: _tabController,
          children: _tabs
              .map(
                (tab) => Center(
                  child: Text(tab),
                ),
              )
              .toList(),
        ),
      ),
    );
  }
}
导入“包装:颤振/材料.省道”;
void main(){
runApp(
材料聚丙烯(
主页:主页(),
debugShowCheckedModeBanner:false,
),
);
}
类MainPage扩展了StatefulWidget{
@凌驾
_MainPageState createState()=>\u MainPageState();
}
类_MainPageState使用TickerProviderStateMixin扩展状态{
TabController\u TabController;
列表_tabs=[“TAB_0”];
@凌驾
void initState(){
_tabController=tabController(vsync:this,length:_tabs.length);
super.initState();
}
void _addTab(){
设置状态(){
_tabs.add(“TAB_${tabs.length}”);
_tabController.dispose();
_tabController=tabController(vsync:this,length:_tabs.length);
});
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
正文:嵌套滚动视图(
HeaderLiverBuilder:(上下文,内部滚动){
返回[
滑杆(
标题:文本(“演示”),
浮动:假,
错,,
行动:[
图标按钮(
图标:图标(Icons.add),
按下按钮:\u addTab,
)
],
底部:选项卡栏(
控制器:\ tab控制器,
isScrollable:是的,
indicatorSize:TabBarIndicatorSize.label,
制表符:\ u制表符
.map((选项卡)=>行(
儿童:[
标签(
文本:选项卡,
),
],
))
.toList(),
),
),
];
},
正文:选项卡视图(
控制器:\ tab控制器,
子项:_选项卡
.地图(
(选项卡)=>中心(
子项:文本(选项卡),
),
)
.toList(),
),
),
);
}
}

奇怪,更改后我确实刷新了UI,但单击新的“选项卡项”不起作用。下面的页面无法刷卡,似乎无法与上面的页面对应