Как получить и отобразить массив сетевых изображений?

#amazon-web-services #list #image #dart #amazon-s3

Вопрос:

Я извлекаю массив изображений из AWS в виде списка и отображаю его с помощью .map. Я не знаю, правильно ли я это делаю. У меня возникла ошибка 'package:flutter/src/painting/_network_image_io.dart': Failed assertion: line 25 pos 14: 'url != null': is not true. , но она отлично работает, если я вручную отобразил ее так, Image.network('https://thisIsJustSampleLink.s3.us-east-2.amazonaws.com/id/sampleOnly/bb.jpg')

Вот мой код. Извлечение данных из базы данных. Babyimage [] — это ссылка на массив изображений из AWS.

 List <String> _babyList = List();

Future<void> getApplicantInfo() async {
AuthService().getRequestorApplicants().then((val) async {

  requestorApplicants.clear();
  _babyList.clear();

  for (var i = 0; i < val.data.length; i  ) {
    var temp = val.data[i];
    setState(() {
      requestorApplicants.add(new RequestorApplicantsList(
        parentname: temp['parentname'],
        babyname: temp['babyname'],
      ));
      _babyList.add(temp['babyimage[]']);
    });
  }

});
}
 

Отображение списка с помощью Image.network

 Container(
   height: MediaQuery.of(context).size.height,
   child: ListView(
   shrinkWrap: true,
   scrollDirection: Axis.vertical,
   children: <Widget>[
   Column(
       children: _babyList.map((e) => Image.network(e)).toList(),
    ),
   ],
)),
 

Ответ №1:

в этом коде _babyList.map((e) => Image.network(e)).toList() некоторые URL-адреса (или, возможно, все) являются нулевыми. Добавьте фильтр для удаления нулевых элементов.

 _babyList.where((e) => e != null).map((e) => Image.network(e)).toList(growable:false)
 

если они не могут быть нулевыми, проверьте свой код, возможно, где-то есть ошибка

Комментарии:

1. Почему я получаю ошибки такого типа? type 'List<dynamic>' is not a subtype of type 'String' Я попытался сделать его списком<Строка>, но появляется та же ошибка. (отредактировано)

2. Я не знаю почему, но вы можете преобразовать список<динамический> в список<динамический><Строка>. dynamicList.map((e) => e.toString()).ToList();

3. Отмеченный. Спасибо за помощь!