gpt4 book ai didi

flutter - 等到构造函数/初始化函数将初始化类的成员

转载 作者:行者123 更新时间:2023-12-03 04:35:13 25 4
gpt4 key购买 nike

当前,当我运行await myService.getItem()时,我收到一个空指针异常,因为_box尚未初始化。如何确定从_initialize调用任何其他函数之前,我的MyService函数已完成?

class MyService {

Box<Item> _box;

MyService() {
_initialize();
}

void _initialize() async {
_box = await Hive.openBox<Storyboard>(boxName);
}

Future<Item> getItem() async {
return _box.get();
}
}
为了创建 MyService,我正在使用Provider,例如:
final myService = Provider.of<MyService>(context, listen: false);

最佳答案

你不能。您可以执行的操作确保在初始化之前,取决于初始化的方法要等到它真正完成后再执行:

class MyService {
Box<Item> _box;
Future<void> _boxInitialization;

MyService() {
_boxInitialization = _initialize();
}

Future<void> _initialize() async {
_box = await Hive.openBox<Storyboard>(boxName);
}

Future<Item> getItem() async {
await _boxInitialization; // this might still be ongoing, or maybe it's already done
return _box.get();
}
}
我对这种解决方案不是很满意,感觉有点……不对,但是可以解决问题。

关于flutter - 等到构造函数/初始化函数将初始化类的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64245342/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com