此问题已在此处有答案:
Null check doesn't cause type promotion in Dart(3个答案)
3天前关闭。
我已经执行了一个空检查,但我仍然得到下面的错误。
error: The argument type 'String?' can't be assigned to the parameter type 'String'. (argument_type_not_assignable at [sitewalk] lib/modules/floor_plan/widgets/dialog_nested/dialog_nested.dart:122)
为了更好地理解,下面是屏幕截图:
现在如果我使用null assertion operator(!)
,错误将消失。但是我想知道为什么它一开始就给出一个错误?
这是因为如果我们使用多线程,这个值可以改变,这可能会导致错误?
4条答案
按热度按时间ffx8fchx1#
原因实际上是
Test
类的子类可能会用一个getter覆盖字段,而getter并不总是给予相同的值。就像这样:在这种情况下,null检查可能第一次通过,但是当为
Text
获取它时,它可能返回nullhfyxw5xn2#
您需要一个变量,它被认为是类型从
String?
提升到String
的候选变量。最简单的方法是有一个局部变量:ttygqcqt3#
使用此代码
玩得开心
wooyq4lh4#
你可以这样做:
将bang运算符放在'errorMessage'的末尾