如何初始化提供者?

How to init provider?

案例是:我将通过以下方式使用 MyProvider SomeProvidersClass.get().myProvider; 从这个结构:

class SomeProvidersClass {
late final myProvider =
    Provider((ref) => MyProvider());

MyProvider get myProvider =>
    read(providers.myProvider);
}

但是 我注意通过一些异步函数初始化 MyProvider; 所以我尝试通过以下方式进行:

class MyProvider {
  late final SomeType _someVariable; // need to init in async way

  Future<void> init() async => _someVariable = await SomeType.getInstance();

  MyProvider();

  // example of content of this provider that i am going to use
  dynamic? getSmth() => _someVariable.getSmth();

}

我收到以下错误

LateInitializationError: field has not been initialized;

你能建议我任何方法吗?我是 riverpod 和供应商的新手:)

试试这个:

class MyProvider {
  SomeType? _someVariable; // need to init in async way

  Future<void> init() async => _someVariable = await SomeType.getInstance();

  MyProvider(){
    init();
  }

  // example of content of this provider that i am going to use
  dynamic? getSmth() => _someVariable?.getSmth();

}