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

时间:2014-12-06 15:21:51

标签: dart dart-async

我想在简单的构造中寻求帮助。

简单地说:我有一个班级MyClass{},它只是创建一个对话框,其中包含自定义标题,自定义消息以及名为okButtoncancelButton的确定/取消按钮(也包括类)。 我在类外面有一个函数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;
}

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

1 个答案:

答案 0 :(得分:2)

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