flutter - 如何在命名构造函数中使用异步?
问题描述
我创建了一个类,我想在命名构造函数中使用异步或在类外部可访问的类中的方法。当使命名构造函数返回一个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 新手,所以我可能用错了?接受任何指导。
解决方案
构造函数不能是异步的。如果您发现自己想要一个异步构造函数,则可以创建一个static
异步方法,其行为类似于异步工厂。从调用者的角度来看,没有太大的区别(并且有什么区别主要有利于拥有一个static
方法)。您还可以将所有其他构造函数(包括默认构造函数)设为私有,以强制调用者使用该static
方法获取您的类的实例。
也就是说,就您而言,您甚至可能根本不需要课程。你打算在一个上使用其他方法HttpService
吗?您是否HttpService
维护任何内部状态?如果没有,那么使用独立功能会更好。
推荐阅读
- python - Python 脚本有命令调用两个脚本。如果一个脚本完成并重新运行命令,如何杀死这两个脚本?
- java - Java - 如何将旧方式代码块空检查切换为可选空检查?
- node.js - 如何在反应中呈现可流式图像响应作为图像?
- java - Microsoft Graph api 无效范围
- docker - 如何公开仅绑定到 127.0.0.1 的服务?
- django - Django:嵌套属性上的 Prefetch_related
- azure - 为什么 iOS 设备可能不会收到来自 Azure 推送通知中心的推送通知?
- python - 如何调用一组函数
- javascript - Firebase 规则保护自动增量计数器?
- python - 在 Python 3 中使用 Scipy 将多个洛伦兹拟合到布里渊光谱