我想在简单的构造中寻求帮助。
简单地说:我有一个班级MyClass{}
,它只是创建一个对话框,其中包含自定义标题,自定义消息以及名为okButton
和cancelButton
的确定/取消按钮(也包括类)。
我在类外面有一个函数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;
}
我怎样才能让它发挥作用?
答案 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