【问题标题】:Flutter Dart Setter Problem When Using Set keywordFlutter Dart Setter 使用 Set 关键字时的问题
【发布时间】:2026-02-17 01:50:01
【问题描述】:

被介绍给 BLoC,我创建了一个简单的类来改变 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 类中去掉 set 关键字时,它工作正常。我很困惑,使用这个关键字而不是直接声明我的setter不是最好吗?和, 为什么我取下来没有报错?

【问题讨论】:

    标签: flutter dart setter bloc


    【解决方案1】:

    Setter 的使用方式就像它们是类的公共字段一样。你只是明确地定义了你自己的二传手。像这样直接将您的预期值分配给设置器:

    bloc.setIsLoading = false;
    

    使用set 的唯一好处是能够使用这种语法。

    当您取消 set 时,它会更改为正常方法,其中 bloc.setIsLoading(false); 将是正确的语法。

    【讨论】:

    • 如果我错了,请纠正我,如果我不使用 set 关键字,我将不得不写 bloc.setIsLoading(flase); 以便我更改值?
    • 非常感谢,会在 10 分钟内检查这个答案。