Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 如何修复';控制器';s length属性与TabBar';s标签属性&x27;_Flutter_Dart - Fatal编程技术网

Flutter 如何修复';控制器';s length属性与TabBar';s标签属性&x27;

Flutter 如何修复';控制器';s length属性与TabBar';s标签属性&x27;,flutter,dart,Flutter,Dart,我正在生成一个NestedScrollView,它由一个AppBar+TabBar+TabBarView组成,根据我在应用程序状态中存储的值,它具有动态的选项卡数 当要生成的选项卡数大于1时,将抛出一个错误,并显示以下消息: Controller的length属性()与TabBar的tabs属性中存在的选项卡数(1)不匹配。 出于某种原因,TabBar的tabslength似乎始终为1,尽管使用相同的变量来确定代码中任何地方的长度 我错过了什么 导入“包装:颤振/材料.省道”; 导入“packa

我正在生成一个
NestedScrollView
,它由一个AppBar+TabBar+TabBarView组成,根据我在应用程序状态中存储的值,它具有动态的选项卡数

当要生成的选项卡数大于1时,将抛出一个错误,并显示以下消息:
Controller的length属性()与TabBar的tabs属性中存在的选项卡数(1)不匹配。

出于某种原因,TabBar的
tabs
length似乎始终为1,尽管使用相同的变量来确定代码中任何地方的长度

我错过了什么

导入“包装:颤振/材料.省道”;
导入“package:test_app/models/app_state_container.dart”;
导入“包:test_app/utils/seeder.dart”;
导入“dart:math”;
导入“包:测试应用程序/视图/选项卡/主页/团队行.dart”;
类MyLeadBoard扩展StatefulWidget{
@凌驾
_MyLeadBoardState createState()=>MyLeadBoardState();
}
类_myLeadboardState扩展状态{
最终_tabName=“排行榜”;
@凌驾
小部件构建(构建上下文){
var container=AppStateContainer.of(上下文);
var-appState=container.state;
返回DefaultTabController(
长度:appState.leadboard.groups.length,
子:嵌套滚动视图(
headerSliverBuilder:(BuildContext上下文,boolInnerBoxIsCrolled){
返回[
滑杆(
标题:文本(_tabName,style:TextStyle(fontSize:30)),
行动:[
图标按钮(
图标:图标(Icons.refresh),
按下时:()=>设置状态(){
appState.leadboard=播种机.generateLeaderboard();
}),
),
],
对,,
浮动:是的,
是的,
强制提升:内包装箱为羊角形,
底部:选项卡栏(
选项卡:appState.Leadboard.groups.map((g)=>Text(g.name)).toList(),
),
)
];
},
正文:选项卡视图(
儿童:[
自定义滚动视图(
物理:弹跳CrollPhysics(),
条子:appState.leadboard.groups
.map((g)=>SliverList(
代表:SliverChildBuilderDelegate(
(上下文、索引){
最终int itemIndex=index~/2;
如果(索引isEven){
返回TeamRow(g.teams[itemIndex]);
}
回流分配器(
身高:1,,
);
},
儿童数量:最大值(0,g.teams.length*2-1),
)))
.toList(),
),
],
),
),
);
}
}

事实证明,我没有正确构建
选项卡视图的主体(我在
自定义滚动视图
中执行了多个
滑动列表
s,而不是多个
自定义滚动视图
s)

下面是我问题中发布的代码的工作
build
方法:

小部件构建(构建上下文){
var container=AppStateContainer.of(上下文);
var-appState=container.state;
返回DefaultTabController(
长度:appState.leadboard.groups.length,
子:嵌套滚动视图(
headerSliverBuilder:(BuildContext上下文,boolInnerBoxIsCrolled){
返回[
滑杆(
标题:文本(_tabName,style:TextStyle(fontSize:30)),
行动:[
图标按钮(
图标:图标(Icons.refresh),
按下时:()=>设置状态(){
appState.leadboard=播种机.generateLeaderboard();
}),
),
],
对,,
浮动:是的,
是的,
强制提升:内包装箱为羊角形,
底部:选项卡栏(
选项卡:appState.Leadboard.groups
.map((g)=>文本(g.name))
.toList(),
),
)
];
},
正文:选项卡视图(
子项:appState.leadboard.groups
.map((g)=>CustomScrollView(
物理:弹跳CrollPhysics(),
条子:[
银表(
代表:SliverChildBuilderDelegate(
(上下文、索引){
最终int itemIndex=index~/2;
如果(索引isEven){
返回TeamRow(g.teams[itemIndex]);
}
回流分配器(
身高:1,,
);
},
儿童数量:最大值(0,g.teams.length*2-1),
))
]))
.toList(),
),
),
);
}

事实证明,我没有正确构建
选项卡视图的主体(我在
自定义滚动视图
中执行了多个
滑动列表
s,而不是多个
自定义滚动视图
s)

下面是我问题中发布的代码的工作
build
方法:

小部件构建(构建上下文){
var container=AppStateContainer.of(上下文);
var-appState=container.state;
返回DefaultTabController(
长度:appState.leadboard.groups.length,
子:嵌套滚动视图(
headerSliverBuilder:(BuildContext上下文,boolInnerBoxIsCrolled){
返回[
斯里维拉帕巴
child: TabBarView(children: [
      Container( ),
      Container( ),
      Container( ),
    ],controller: _tabController,)