我想用 GetIt 注册一个 cubit 并确保它的构造函数主体在第一次与 cubit 交互之前执行。
我的肘部如下所示:
class MyCubit extends Cubit<bool> {
final Dependency dependency;
MyCubit(this.dependency) : super(false) {
this.initialCall();
}
initialCall() async {
final resultingBool = await doSomethingAsync();
emit(resultingBool)
}
}
我在 GetIt 注册了一家工厂
getIt.registerFactory(
() => MyCubit(getIt()),
);
并在类似的地方提供它:
BlocProvider<MyCubit>(
create: (context) => di.getIt<MyCubit>(),
)
现在,如果我从如下小部件中的 cubit 读取,构造函数会被调用,但currentBool由于super(false).
final currentBool = context.read<MyCubit>.state
如果我只是添加lazy: false,到我的 BlocProvider 它并不能确保doSomethingAsync()等待(例如doSomethingAsync()可能需要很长时间。
我可以
this.initialCall();从构造函数主体中删除并initialCall()返回Future<void>并将我从肘部读取的小部件包装在 FutureBuilder 中吗?还是我必须引入状态才能拥有
MyCubitLoading状态?