我使用Flutter框架 这部分代码使用操作“?”。但是愚蠢的人了解
if (state is WeatherLoaded) {
final weather = state.weather;
final themeBloc = BlocProvider.of<ThemeBloc>(context);
themeBloc.dispatch(WeatherChanged(condition: weather.condition));
_refreshCompleter?.complete();
_refreshCompleter = Completer();
所有代码this链接
答案 0 :(得分:0)
检查此链接:Language tour
?。
有条件的成员访问权限
与。类似,但最左边的操作数可以为null;例如:foo?.bar 从表达式foo中选择属性栏,除非foo为null(其中 如果foo?.bar的值为null)
答案 1 :(得分:0)
证明这一点的最好方法是一个简单的例子。
我有一个方法为SomeObject
的对象username
。
我制作了2个实例:
aeonObject
不是null
someOtherObject
,即null
class SomeObject {
String username() => "aeon";
}
void main() {
final aeonObject = SomeObject();
print(aeonObject.username());
SomeObject someOtherObject;
print(someOtherObject.username());
}
如果我执行此代码段,您将看到以下输出。
该程序将崩溃,因为我们尝试在null
引用上执行方法。
dart lib / main.dart lib / main.dart:警告:将此解释为包URI,“ package:sample / main.dart”。
aeon
未处理的异常: NoSuchMethodError:方法“用户名”在null上被调用。
接收器:null 尝试调用:username()
但是如果我用print
或?.
来调用Conditional member access operator
语句。
print(someOtherObject?.username());
我们取而代之。
空