Flutter 在颤振/省道中,使用==&引用;vs";是";在条件if语句中
我正在做一个关于flatter中BLoC的教程,导师在他的条件if语句中使用了关键字“is”,他说“smartcasts”状态。有人能帮我理解“is”操作符如何让我在下面的代码中访问集团的状态吗Flutter 在颤振/省道中,使用==&引用;vs";是";在条件if语句中,flutter,dart,Flutter,Dart,我正在做一个关于flatter中BLoC的教程,导师在他的条件if语句中使用了关键字“is”,他说“smartcasts”状态。有人能帮我理解“is”操作符如何让我在下面的代码中访问集团的状态吗 BlocBuilder<WeatherBloc, WeatherState>( builder: (context, state) { if (state is WeatherLoaded) { return
BlocBuilder<WeatherBloc, WeatherState>(
builder: (context, state) {
if (state is WeatherLoaded) {
return buildColumnWithData(context,state.weather);
}
BlocBuilder(
生成器:(上下文、状态){
如果(状态为WeatherLoaded){
返回buildColumnWithData(上下文、状态、天气);
}
当我使用if(state==WeatherLoaded)尝试相同的代码时,我无法将state.weather传递到buildColumnWithData函数中。这是为什么?
要测试两个对象x和y是否表示相同的对象,请使用==运算符。(在需要知道两个对象是否是完全相同的对象的罕见情况下,请使用相同()函数。)==运算符的工作原理如下:
如果x或y为null,则如果两者都为null,则返回true;如果只有一个为null,则返回false
返回方法调用的结果x.==(y)。(没错,像==这样的运算符是在第一个操作数上调用的方法。有关详细信息,请参阅运算符。)
如果obj实现了由T指定的接口,obj的结果为T
为真。例如,obj is Object始终为真
在代码中:
is
检查状态是否为WeatherLoaded
类的实例
除此之外,如果检查成功,则不需要对WeatherLoaded
进行转换-在if语句的范围内,state变量向下转换为WeatherLoaded
(“智能转换为状态”)
使用
=
运算符,您可以比较一个类的两个实例。谢谢您的精彩回答。最后一个问题-如果我使用(state==WeatherLoaded)而不是“is”,如何在if语句的范围内使用state?您不会。如果state持有WeatherLoaded类的实例,state==WeatherLoaded
将计算为false。x==WeatherLoaded
如果x的类型为type
并指向WeatherLoaded:var weatherLoadedType=WeatherLoaded则为truee> (注意:没有通过括号进行实例化)