dart - 如何监听变量的变化(类 getter)?

标签 dart dart-async

我想寻求简单构造方面的帮助。

简单:我有一个类 MyClass{},它只是创建一个包含自定义标题、自定义消息和名为 okButtoncancelButton 的确定/取消按钮的对话框 (也是该类中的 getter/setter)。 我在类外部有一个函数 bool myFunction() ,它创建该类的一个新实例(使用其默认构造函数)来向用户显示对话框。 最后我想(根据用户单击的按钮)在我的函数中返回 true 或 false。

我的想法如何工作(不起作用;我的理想算法的预览):

// Define a class
class MyClass {

  // Define buttons
  ButtonElement okButton;
  ButtonElement cancelButton;

  // Define a constructor
  MyClass(){
    // Create a dialog, define buttons
  }
}

// Define bool function
bool myFunction(){
  // Create a new instance of class
  MyClass myNewClass=new MyClass();

  // Return bool value after user clicked on some button
  myNewClass.okButton.onClick.then => true;
  myNewClass.cancelButton.onClick.then => false;
}

我怎样才能让它发挥作用?

最佳答案

import 'dart:html';
import 'dart:async' show Future, Completer;

class MyClass {

  // Define buttons
  ButtonElement okButton = new ButtonElement()..text = 'OK';
  ButtonElement cancelButton = new ButtonElement()..text = 'Cancel';

  // Define a constructor
  MyClass(){
    // Create a dialog, define buttons
  }
}

void main() async {
  var dialogResult = await myFunction();
}

// Define bool function
Future<bool> myFunction() {
  Completer c = new Completer();
  // Create a new instance of class
  MyClass myNewClass=new MyClass();

  // Return bool value after user clicked on some button
  myNewClass.okButton.onClick.first.then((e) => c.complete(true));
  myNewClass.cancelButton.onClick.first.then((e) => c.complete(false));

  return c.future;
}

您应该在 DartEditor 首选项中启用实验性async 功能。另请参阅Async/Await feature in Dart 1.8

关于dart - 如何监听变量的变化(类 getter)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27333131/

相关文章:

mongodb - 两次调用Future后出现NoSuchMethodError

dart - 当我从 Dart 中标记为异步的函数返回 Future 时会发生什么?

mongodb - Dart Web 应用程序未访问 MongoDB

dart - Future 从原点 future 外部抛出异常句柄

flutter - ClipPath

flutter - 如何避免每次导航到页面时都重新加载数据

dart - Dart bwu_datagrid错误

dart - 如何在 Flutter 中处理密码中的 TextField 验证

android - 当应用程序处于深色/浅色主题(尤其是深色主题)时,在 Flutter 中测试应用程序外观的最佳方法

flutter - 在小部件中初始化StateProvider