#flutter #flutter-layout #flutter-dependencies #flutter-test
Вопрос:
Я получаю эту ошибку, когда пытаюсь вызвать метод .map в файле snapshot.data. Я использую базу данных SQLite.
Код, выдающий ошибку, выглядит следующим образом:
FutureBuilder(
future: _alarms,
builder: (context, snapshot)
{
if(snapshot.hasData){
return ListView(
children: snapshot.data.map<Widget>((alarms) {
return Container(
И я создаю список _alarms в методе initState:
@override
void initState() {
_alarmHelper.initializeDatabase().then((value) => print('------------dB initialized'));
_alarms = _alarmHelper.getAlarm();
super.initState();
}
И функция .getAlarm () определяется так:
Future<List<AlarmInfo>> getAlarm() async{
var resu<
var db = await this.database;
result = await db?.query(tableName);
result.forEach((element) {
var alarmInfo = AlarmInfo.fromMap(element);
alarms.add(alarmInfo);
}
);
return alarms;
}
Я также попытался добавить оператор?., но затем это возвращает еще одну ошибку, которая заключается в том, что .карта не определена для объекта типа children: snapshot.data?.map<Widget>((alarms) {
Мы будем признательны за любую помощь, и если вам потребуется дополнительная информация, не стесняйтесь оставлять комментарии.
Спасибо 🙂
Ответ №1:
Я предполагаю, что это потому, что вы не указали тип для FutureBuilder
виджета, следовательно snapshot.data
, он из типа Object
(вместо списка, который вы там ожидаете), и map
функция для этого не существует.
Это должно быть исправлено, написав это так:
FutureBuilder<List<AlarmInfo>>(
...
),
Кроме того, так data
как может быть null (но вы проверили это, snapshot.hasData
вам нужно написать:
snapshot.data!.map(...)