我创建了一个类,我想在命名构造函数或类中可在类外访问的方法中使用异步。当进行命名的建筑工返回一个Future类型,我得到一个错误说:Constructors can't have a return type。
然后我尝试删除Future类型,但我仍然收到一条错误消息,说The modifier 'async' can't be applied to the body of a constructor.
如何在命名构造函数中使用异步?
class HttpService {
Future<void> HttpService.getAll() async {
final response = await http.get(
Uri.encodeFull('http://localhost:4000/'),
headers: {'headers': 'application/json'},
);
if (response.statusCode == 200) {}
}
}
Run Code Online (Sandbox Code Playgroud)
我是 oop 的新手,所以我可能用错了它?接受任何指导。
您不能async在构造函数中使用。您应该为此创建一个单独的方法。
解决方案:1(推荐)
class Foo {
static Future<void> fetch() async { // method
await future();
}
}
Run Code Online (Sandbox Code Playgroud)
解决方案:2
class Foo {
Foo.named() { // named constructor
future().then((_) {
// future is completed do whatever you need
});
}
}
Run Code Online (Sandbox Code Playgroud)
构造函数不能是异步的。如果您发现自己需要一个异步构造函数,您可以创建一个static像异步工厂一样工作的异步方法。从调用者的角度来看,没有太大区别(并且有哪些区别主要有利于拥有static方法)。您还可以将所有其他构造函数(包括默认构造函数)设为私有,以强制调用者使用该static方法来获取您的类的实例。
也就是说,就您而言,您甚至可能根本不需要课程。您打算在 上使用其他方法HttpService吗?您是否在HttpService维护任何内部状态?如果没有,那么您最好使用独立功能。
| 归档时间: |
|
| 查看次数: |
3210 次 |
| 最近记录: |