Я пытаюсь вызвать вывод поставщика будущего типа Future> в построитель представления списка. Я думаю, что я очень близок, так как я могу визуализировать само окончательное представление списка, однако до этого появляется ошибка, и она быстро заменяется представлением списка после завершения Future. Я полагаю, что там может быть что-то не так с моей реализацией.
Вот что я получил до сих пор (это производные от моего реального кода, там слишком много всего, что не нужно, я пытался упростить это):
class TempProvider extends ChangeNotifier(){
List<Widget> _list = <Widget>[];
List<Widget get list => _list;
Future<List<Widget>> getList() async{
List _result = await db....
_result.forEach((_item){
addToList(_item);
});
}
addToList(Widget widget){
_list.add(widget);
notifyListeners();
}
}
class Parent extends StatelessWidget{
@override
Widget build(BuildContext context) {
return FutureProvider(
create: (context) => TempProvider().getList(),
child: Child(),
);
}
}
class Child extends StatelessWidget{
@override
Widget build(BuildContext context) {
var futureProvider = Provider.of<List<Widget>>(context);
return FutureBuilder(
initialData: <Widget>[],
future: TempProvider().getList(),
builder: (BuildContext context, AsyncSnapshot snapshot) {
if (snapshot.connectionState == ConnectionState.none &&
snapshot.hasData == true) {
return ListView.builder(
itemCount: futureProvider.length,
itemBuilder: (BuildContext context, int index) {
return futureProvider[index];
},
);
} else {
return Text('ALAWS');
}
},
);
}
}
Таким образом, выводом моего Future будет список виджетов, который будет заполнять представление списка, которое я пытаюсь создать. Хотя я могу сделать представление списка в конце, ошибка ниже появляется между:
The getter 'length' was called on null.
Receiver: null
Tried calling: length
The relevant error-causing widget was
FutureBuilder<List<Widget>>
Надеясь, что кто-то может помочь с этим или, по крайней мере, привести лучший пример.
Большое вам спасибо!