选项卡栏视图:控制器的长度属性 (2) 与选项卡栏的选项卡属性中存在的选项卡数 (1) 不匹配



标题中的错误。当然,这是一件简单的事情,但会发生一些奇怪的行为。我正在创建一个带有 1 或 2 个选项卡的 TabBarView,具体取决于构造函数 (numTabs( 中的参数。现在 Flutter 断言即使选项卡的长度明显为 2 - 控制器长度由此值确定,但widget.children.lengthinTabs.dart认为它的长度为 1。

然后是更奇怪的行为:当 TabController 的长度被硬编码为 1 时,然后两个开关,然后我得到错误Controller's length property (1) does not match the number of tabs (2) present in TabBar's tabs property。所以现在它知道 TabBar 中有两个选项卡。

编辑:应该注意的是,它只发生在我以 2numTabs传入时。numTabs = 1工作正常,符合预期。

任何帮助将不胜感激。这是代码(有状态小部件中的所有内容(:

List<Widget> tabs;
List<Widget> tabViews ;
@override
void initState() {
super.initState();
tabs = (widget.numTabs == 1) ? List(1) : List(2) ;
tabViews = (widget.numTabs == 1) ? List(1) : List(2) ;
_tabController = new TabController(vsync: this, length: tabs.length);
}
@override
Widget build(BuildContext context) {
if (widget.numTabs == 1){
tabs[0] = (new Tab(text: "Update"));
tabViews[0] = (_someWidget1);
}else{
tabs = [new Tab(text: "Post 1"), new Tab(text: "Post 2")];
tabViews[0] = (_someWidget1);
tabViews[1] = (_someWidget2);
}
return TabBarView(
controller: _tabController,
children: <Widget>[ Scaffold(
appBar: PreferredSize(
preferredSize:
Size.fromHeight(screenHeight(context, dividedBy: 5)),
child: AppBar(
flexibleSpace: FlexibleSpaceBar(
title: Center(
Text('Title'),
),
),
bottom: TabBar(
controller: _tabController,
tabs: tabs,
),
),
),
body: new TabBarView(
controller: _tabController,
children: tabViews,
)),
],
);
}

这是一个简单的问题,你可以再见,如果有条件,你可以再见如果您无法解决此问题,则可以上传完整文件,我将尝试修复

if(items.length >= 3){
return getBody(items);
}
else{
return Container();
}

最新更新