Flutter - 'package: cached_network_image / src / image_provider / _image_provider_io.dart': неудачное утверждение: строка 20 поз. 16: 'url! = Null': неверно - PullRequest
0 голосов
/ 20 июня 2020

CachedNetworkImageProvider требует передачи ненулевого URL-адреса. то, что я пытаюсь сделать, это: Когда _singleCategoryImage имеет значение null, просто раскрасьте поле по умолчанию, иначе покажите изображение, но не могу понять, как это сделать.

Я получаю эту ошибку.

'package:cached_network_image/src/image_provider/_image_provider_io.dart': Failed assertion: line 20 pos 16: 'url != null': is not true.

Источник:


Widget singleCategoryTemp(_singleCategoryText, _singleCategoryImage) {
  return Card(
      elevation: 0,
      color: Colors.transparent,
      child: LayoutBuilder(
          builder: (BuildContext context, BoxConstraints constraints) {
            return Container(
              margin: (EdgeInsets.all(MediaQuery.of(context).size.width / 27)),
              child: Center(
                child: Text(
                  _singleCategoryText,
                  style: TextStyle(
                      fontWeight: FontWeight.bold,
                      fontSize: MediaQuery.of(context).size.width / 17),
                  textAlign: TextAlign.center,
                ),
              ),
              decoration:
              new BoxDecoration(
                image: DecorationImage(
                  image: CachedNetworkImageProvider(_singleCategoryImage),
                 /* image: NetworkImage(
                      _singleCategoryImage), */
                  fit: BoxFit.cover,
                ),
                // gradient: LinearGradient(colors: [Colors.red, Colors.purple]),
                borderRadius: new BorderRadius.circular(20.0),
                color: Color(0xFF6d6e70)
              ),
            );
          }));
}

Ответы [ 2 ]

0 голосов
/ 20 июня 2020

Вы можете добавить тернарный оператор, чтобы оценить, используется ли изображение или нет

decoration: _singleCategoryImage != null
  ? new BoxDecoration(
      image: DecorationImage(
        image: CachedNetworkImageProvider(_singleCategoryImage),
        /* image: NetworkImage(
        _singleCategoryImage), */
        fit: BoxFit.cover,
      ),
      // gradient: LinearGradient(colors: [Colors.red, Colors.purple]),
      borderRadius: new BorderRadius.circular(20.0),
      color: Color(0xFF6d6e70))
  : new BoxDecoration(....), //<==== Your decoration without image

Или, может быть, этот другой вариант, чтобы просто избежать загрузки изображения, но с тем же BoxDecoration

  decoration: new BoxDecoration(
      image: _singleCategoryImage != null
          ? DecorationImage(
              image: CachedNetworkImageProvider(_singleCategoryImage),
              /* image: NetworkImage(
_singleCategoryImage), */
              fit: BoxFit.cover,
            )
          : null,
      // gradient: LinearGradient(colors: [Colors.red, Colors.purple]),
      borderRadius: new BorderRadius.circular(20.0),
      color: Color(0xFF6d6e70)))
0 голосов
/ 20 июня 2020

Ошибка предполагает, что URL-адрес, который вы предоставляете для загрузки изображения из сети, равен нулю, попробуйте проверить URL-адрес с помощью оператора печати.

...