#flutter #dart
#flutter #dart
Вопрос:
Я разрабатываю групповое приложение, и когда я загружаю страницу списка пользователей, появляется ошибка: метод ‘[]’ был вызван в null. Получатель: null Пытался вызвать:
Получив сообщение об ошибке, я пытаюсь выполнить горячую перезагрузку страницы, и все работает. Это происходит каждый раз.
Я пытаюсь загрузить то, что мне нужно, а затем работать с ними
@override
void didChangeDependencies() async {
super.didChangeDependencies();
groupModel =await DBFuture().getGroup(widget.groupId);
users= await DBFuture().getUsers(groupModel.members);
dlu=groupModel.members.length;
}
child: ListView.builder(
itemCount: dlu,
shrinkWrap: true,
itemBuilder: (BuildContext context,index) => Container(
.
.
.
.
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text("Nazwa: " users[index].fullName),
Text("Email: " users[index].email),
Text("Ranga: "),
],
)
],
),
проблема с индексом?
Ответ №1:
Причина, по которой он выдает сообщение об ошибке с null, заключается в том, что ваши данные еще не загружены, и когда вы перезагружаете данные, ошибка исчезает.
Итак, если вы хотите получить данные, тогда только создайте экран, который вы должны использовать Futurebuilder
или StreamBuilder
для потока. Оберните вас ListView.builder
внутри a Futurebuilder
, чтобы он ожидал получения данных, после чего только вы загружаете страницу с данными. Обязательно укажите возвращаемый тип данных вашего future
class Test extends StatelessWidget {
@override
Widget build(BuildContext context) {
return FutureBuilder<DataType>(
future: DBFuture().getUsers(groupModel.members),
builder: (context, snapshot) {
if (snapshot.hasData) {
return ListView.builder(
itemCount: dlu,
shrinkWrap: true,
itemBuilder: (BuildContext context, index) => Container(
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text("Nazwa: " users[index].fullName),
Text("Email: " users[index].email),
Text("Ranga: "),
],
),
),
);
}
return Center(child: CircularProgressIndicator(),);
},
);
}
}
Комментарии:
1. Какой тип базы должен быть
2. @K55, если вы нашли мой ответ полезным / полезным. Пожалуйста, дайте ему большой палец вверх и отметьте как ответ, если это возможно;) и что касается другого сообщения в будущем