我创建了一个类,并且我想在命名构造函数中使用异步,或者要在该类之外访问该类中的方法。使命名构造函数返回evaluate()
类型时,出现错误消息:Function
。
然后我尝试删除Future
类型,但仍然收到错误消息Constructors can't have a return type
。
如何在命名构造函数中使用异步?
Future
我是新手,所以我可能使用错了吗?接受任何指导。
答案 0 :(得分:2)
构造函数不能异步。如果发现自己需要异步构造函数,则可以制作一个像异步工厂一样的static
异步方法。从调用者的角度来看,there isn't much difference(以及有什么区别主要是偏爱使用static
方法)。您还可以使所有其他constructors (including the default constructor) private强制调用者使用static
方法来获取您的类的实例。
也就是说,在您的情况下,您甚至根本不需要一个类。您是否打算在HttpService
上使用其他方法?您的HttpService
是否保持任何内部状态?如果没有,那么拥有独立功能会更好。
答案 1 :(得分:0)
您不能在构造函数中使用async
。您应该为此创建一个单独的方法。
解决方案:1(推荐)
class Foo {
static Future<void> fetch() async { // method
await future();
}
}
解决方案:2
class Foo {
Foo.named() { // named constructor
future().then((_) {
// future is completed do whatever you need
});
}
}