首页 > 解决方案 > 如何在命名构造函数中使用异步?

问题描述

我创建了一个类,我想在命名构造函数中使用异步或在类外部可访问的类中的方法。当使命名构造函数返回一个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) {}
  }
}

我是 oop 新手,所以我可能用错了?接受任何指导。

标签: flutterdart

解决方案


构造函数不能是异步的。如果您发现自己想要一个异步构造函数,则可以创建一个static异步方法,其行为类似于异步工厂。从调用者的角度来看,没有太大的区别(并且有什么区别主要有利于拥有一个static方法)。您还可以将所有其他构造函数(包括默认构造函数)设为私有,以强制调用者使用该static方法获取您的类的实例。

也就是说,就而言,您甚至可能根本不需要课程。你打算在一个上使用其他方法HttpService吗?您是否HttpService维护任何内部状态?如果没有,那么使用独立功能会更好。


推荐阅读