#flutter #dart
Вопрос:
в этом коде я не могу увидеть статью?.Значение ImageUrl в сетевом изображении. Я получаю эту ошибку:
Тип аргумента ‘String?’ не может быть присвоен типу параметра ‘String’
какая-нибудь помощь?
в списке в виде текста я могу видеть значение (ссылку) изображения, но в сетевом изображении не могу.
Widget build(context) {
return Scaffold(
backgroundColor: const Color(0xffeeeeee),
appBar: AppBar(
title: const Text(
'List User Example',
),
),
body: Container(
padding: const EdgeInsets.all(
10.0,
),
child: FutureBuilder<Article>(
future: _futureArticle,
builder: (BuildContext context, AsyncSnapshot<Article> snapshot) {
if (snapshot.hasData) {
final article = snapshot.data?.data;
return Container(
height: 500.0,
width: 500.0,
decoration: BoxDecoration(
image: DecorationImage(
image: NetworkImage(article?.imageUrl), fit: BoxFit.cover),
shape: BoxShape.circle,
),
child: Card(
elevation: 4.0,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10.0),
),
child: ListTile(
title: Text(
'Title: ${article?.title}',
),
subtitle: Text(
'Content: ${article?.imageUrl}',
),
),
),
);
} else if (snapshot.hasError) {
return Text(
'${snapshot.error}',
);
} else {
return const Center(
child: CircularProgressIndicator(),
);
}
},
),
),
);
}
}
Комментарии:
1. Ошибка заключается в том, что в режиме nullsafety NetworkImage() не может принимать аргумент null и
article?.imageUrl
может принимать значение null. Вы могли бы сделать что-то вродеNetworkImage(article == null ? 'https:/my.com/default.png' : article!.imageUrl)
2. все та же проблема
3. Извините — тоже поставил ! после ImageUrl:
NetworkImage(article == null ? 'https:/my.com/default.png' : article!.imageUrl!)
FWIW Я думаю, что то, что я предлагаю здесь с операторами bang, как-то не одобряется, так как без проверок вверх по течению у вас все равно могут быть ошибки с нулевыми значениями, которые уничтожают всю функцию нулевой безопасности. Идея безопасности null заключается в том, что где-то значение должно быть проверено на нуль перед его использованием, и если функция не принимает тип, допускающий значение null (т. Е. с a ? суффикс типа » Строка?»), то он не проверяет и ожидает, что вызывающий абонент проверил наличие нулевых значений.4. спасибо, теперь работает.