我是新来的flutter,在传递字符串时遇到错误,我到处找,最后在StackOverflow中添加了这个错误
错误是Error: The argument type 'String?' can't be assigned to the parameter type 'String' because 'String?' is nullable and 'String' isn't.
void errorSnackBar(BuildContext context, String? text) {
ScaffoldMessenger.of(context).showSnackBar(new SnackBar(
duration: new Duration(seconds: 4),
content: new Row(
children: <Widget>[
Icon(
Icons.error,
color: Colors.red,
),
Padding(
padding: const EdgeInsets.fromLTRB(10.0, 0, 0, 0),
child: new Text(text),
),
],
),
));
}
6条答案
按热度按时间92vpleto1#
我也有同样的问题
在我的例子中,我不得不使用零安全。
我不得不用一个**!**标记来使它工作。比如:如果我想称之为
txu3uszq2#
这可能会帮助新的人,我有类似的问题,我解决它的方式
有关详细信息,请参阅此Link
krcsximq3#
Text()
需要String
作为其第一个参数(即不是null
)。null
不是类型String
的有效值,就像123
不是类型String
的有效值一样。如果您的错误消息是
String?
,您需要先处理它是null
的情况,然后才能将它传递给Text()
。1.检查是否为空,提前返回:
1.如果你知道只有当
text
为非空值时才调用errorSnackBar
,那么试着改变它的类型:ylamdve64#
使用.toString()将文本转换为字符串
hyrbngr75#
我刚接触Flutter时就遇到过这个问题,最好的办法是使用默认值而不是null,这样如果你得到的是null而不是文本,你就可以使用一些值。
现在,假设您已将此文本传递给snackbar,并且值为null,我们现在可以使用dart的null检查操作符
Datatype? variableName;
,如果变量没有内容或包含一些文本,则使用??
进行检查,然后给出一些默认值。例如variableName ?? 'Hello variable is null so this will be the default value'
iugsix8n6#
我喜欢的更好的选择是: