Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 在颤振/省道中,使用==&引用;vs";是";在条件if语句中_Flutter_Dart - Fatal编程技术网

Flutter 在颤振/省道中,使用==&引用;vs";是";在条件if语句中

Flutter 在颤振/省道中,使用==&引用;vs";是";在条件if语句中,flutter,dart,Flutter,Dart,我正在做一个关于flatter中BLoC的教程,导师在他的条件if语句中使用了关键字“is”,他说“smartcasts”状态。有人能帮我理解“is”操作符如何让我在下面的代码中访问集团的状态吗 BlocBuilder<WeatherBloc, WeatherState>( builder: (context, state) { if (state is WeatherLoaded) { return

我正在做一个关于flatter中BLoC的教程,导师在他的条件if语句中使用了关键字“is”,他说“smartcasts”状态。有人能帮我理解“is”操作符如何让我在下面的代码中访问集团的状态吗

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> (注意:没有通过括号进行实例化)