【问题标题】:Is Dart/Flutter has a listener function?Dart/Flutter 有监听功能吗?
【发布时间】:2022-08-05 11:54:17
【问题描述】:

侦听器函数可以侦听任何参数类型(不仅是侦听器类型)。这与小部件无关。

前任。

int a = 0;
listener((a>0)=>print(\"A = $a\"));
a= 1; //A = 1
a= -1; //
a= 2; //A = 2

    标签: flutter dart


    【解决方案1】:

    您可以为此使用ValueNotifier。这是一个ChangeNotifier,当值被替换为不等于相等运算符== 评估的旧值时触发。

    Here 是关于这种方法的一个很好的教程。

    【讨论】:

    • 它可以在与小部件无关的情况下使用吗?
    【解决方案2】:

    基本方法是创建用于更新要添加到侦听器的参数的函数。

    void test() {
      int a = 0;
      void updateA(newA) {
        if(newA is! int) return;
        a = newA;
        if (a > 0) print("A = $a");
      }
      updateA(1);
      updateA(-1);
      updateA(2);
    }
    

    更好的方法是使用类创建参数。

    void main() {
      ParameterWithListener a = ParameterWithListener(data: 0);
      a.listener = () {
        if (a.data is int && a.data > 0) print("A = ${a.data}");
      };
      a.update(1);
      a.update(-1);
      a.update(2);
    }
    
    class ParameterWithListener {
      ParameterWithListener({this.data, this.listener});
    
      dynamic data;
      Function()? listener;
    
      Future update(data) async {
        this.data = data;
        if (listener is Function()) await listener!();
      }
    }
    

    结果:

    A = 1
    A = 2
    

    【讨论】:

      猜你喜欢
      • 2020-06-24
      • 2022-11-12
      • 2017-12-17
      • 1970-01-01
      • 2021-04-14
      • 2014-11-23
      • 1970-01-01
      • 1970-01-01
      • 2016-06-01
      相关资源
      最近更新 更多