Flutter Dart Setter 使用 Set 关键字时出现问题
Flutter Dart Setter Problem When Using Set keyword
被介绍给 BLoC,我创建了一个简单的 class 来改变 bool
变量的值:
class SignInBloc {
StreamController<bool> _isLoading = StreamController<bool>();
Stream<bool> get getIsLoading => _isLoading.stream;
set setIsLoading(bool isLoading) => _isLoading.sink.add(isLoading); // Here is my problem (set)
void dispose(){
_isLoading.close();
}
}
当我使用 set
关键字然后在我的 UI 屏幕中调用它时:bloc.setIsLoading(false);
我得到一个例外:
Try correcting the name to the name of an existing method, or defining a method named 'setIsLoading'.
但是当我在 SignInBloc
class 中去掉 set
关键字时,它工作正常。我很困惑,最好使用这个关键字而不是直接声明我的 setter 吗?和,
为什么我取下来不报错?
Setter 的用途就好像它们是 class 的 public 字段一样。您只是明确定义了自己的 setter。像这样直接将您的预期值分配给 setter:
bloc.setIsLoading = false;
使用 set
的唯一好处是能够使用此语法。
当您取消 set
时,它被更改为正常方法,其中 bloc.setIsLoading(false);
将是正确的语法。
被介绍给 BLoC,我创建了一个简单的 class 来改变 bool
变量的值:
class SignInBloc {
StreamController<bool> _isLoading = StreamController<bool>();
Stream<bool> get getIsLoading => _isLoading.stream;
set setIsLoading(bool isLoading) => _isLoading.sink.add(isLoading); // Here is my problem (set)
void dispose(){
_isLoading.close();
}
}
当我使用 set
关键字然后在我的 UI 屏幕中调用它时:bloc.setIsLoading(false);
我得到一个例外:
Try correcting the name to the name of an existing method, or defining a method named 'setIsLoading'.
但是当我在 SignInBloc
class 中去掉 set
关键字时,它工作正常。我很困惑,最好使用这个关键字而不是直接声明我的 setter 吗?和,
为什么我取下来不报错?
Setter 的用途就好像它们是 class 的 public 字段一样。您只是明确定义了自己的 setter。像这样直接将您的预期值分配给 setter:
bloc.setIsLoading = false;
使用 set
的唯一好处是能够使用此语法。
当您取消 set
时,它被更改为正常方法,其中 bloc.setIsLoading(false);
将是正确的语法。