【发布时间】:2020-07-29 20:57:54
【问题描述】:
我正在实现 TabBar,但收到错误,如上所述。我知道发生这种情况的原因,但不知道如何解决。
我有一个异步函数,旨在从填充列表的 Firebase 中提取数据。该功能如下所述。该函数拉取的数据用于将长度传递给TabController。
从 Firebase 调用数据的函数:
Future functionName async {
await function actions...
List example = ['item1', 'item2', 'item3', 'item4'];
}
此函数用于 Future Builder,一旦函数执行完成,它就会返回一个要显示的小部件。
Future Builder 的未来在类的 initState() 中初始化。 init() 状态如下所示:
@override
void initState() {
super.initState();
_future = functionName();
tabController = TabController(length: example.length, vsync: this, initialIndex: 0);
tabController.addListener(_setActiveTabIndex);
}
现在,我得到了错误,如上所述。这很明显,为什么! 由于该函数是一个异步函数并且是在 Future Builder 中构建的,因此列表“示例”最初是空的。 TabController 的长度为 0。但随着此列表的填充,长度会增加,但 TabController 的长度不会改变。
我尝试过使用:
@override
void initState() {
super.initState();
_future = functionName();
setState(() {
tabController = TabController(length : example. length, vsync : this, initialIndex : 0)
}
)
但这也不起作用。 知道这个问题很烦人,但无法解决它。对此的任何帮助将不胜感激。
【问题讨论】: