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,)