我正在实现TabBar,但收到错误,如上所述。我知道发生这种情况的原因,但不知道如何解决此问题。
我有一个旨在从Firebase中提取数据的异步功能,该数据填充了列表。功能说明如下。该函数提取的数据用于将长度传递给TabController。
从Firebase调用数据的功能:
Future functionName async {
await function actions...
List example = ['item1', 'item2', 'item3', 'item4'];
}
此功能在Future Builder中使用,一旦完成函数执行,该函数将返回要显示的小部件。
Future Builder的Future在类的initState()中初始化。 init()状态如下:
@override
void initState() {
super.initState();
_future = functionName();
tabController = TabController(length: example.length, vsync: this, initialIndex: 0);
tabController.addListener(_setActiveTabIndex);
}
现在,如上所述,我得到了错误。显而易见,为什么!由于该函数是异步函数,并且内置在Future Builder中,因此列表“ example”最初为空。并且TabController的长度为0。但是随着列表的填充,长度增加,但TabController的长度不变。
我尝试使用:
@override
void initState() {
super.initState();
_future = functionName();
setState(() {
tabController = TabController(length : example. length, vsync : this, initialIndex : 0)
}
)
但是这也不起作用。知道这个问题很烦人,但无法解决它。在此方面的任何帮助将不胜感激。
您已经知道问题的原因。
洞的想法有点倒退。
[在不知道需要多少个选项卡之前,您正在尝试构建TabBar
。
您可以
FutureBuilder
,然后使用接收到的数据构建TabBar
。或者您可以
我希望这能使您走上正轨