Я реализую TabBar, но получаю ошибку, как указано выше. Я знаю причину, по которой это происходит, но не могу понять, как это исправить.
У меня есть функция asyn c, предназначенная для извлечения данных из 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);
}
Теперь я получаю сообщение об ошибке, как указано выше. Что очевидно, почему! Поскольку функция является асинхронной c функцией и встроена в Future Builder, изначально список «example» пуст. И TabController получает длину 0. Но когда этот список заполняется, длина увеличивается, но длина TabController не меняется.
Я пытался использовать:
@override
void initState() {
super.initState();
_future = functionName();
setState(() {
tabController = TabController(length : example. length, vsync : this, initialIndex : 0)
}
)
Но это тоже не работает. Досадно знать проблему, но не могу ее исправить. Любая помощь в этом будет высоко оценена.