我想寻求简单构造方面的帮助。
简单:我有一个类 MyClass{}
,它只是创建一个包含自定义标题、自定义消息和名为 okButton
和 cancelButton 的确定/取消按钮的对话框
(也是该类中的 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/