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); 将是正确的语法。