Riverpod 替代 SetUpLocator

Riverpod Alternative To SetUpLocator

我想在 Flutter App StartUp 上调用我的 Remote Config 实例 我设置了Riverpod如下

class ConfigService {
  // Will Initialise here
  final RemoteConfig _remoteConfig;
  ConfigService(this._remoteConfig);

  Future<void> initialise() async {
  ...// Will fetchAndActivate
}

final remoteConfigProvider = Provider<RemoteConfig>((ref) {
  return RemoteConfig.instance;
});

final configProvider = Provider<ConfigService>((ref) {
  final _config = ref.read(remoteConfigProvider);
  return ConfigService(_config);
});

我想在

之后在主程序中调用它
...
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
... here

但这无法完成,因为需要 ReaderProviderScope 低于此水平

我如何在我的 main 中调用此提供商?

简短的回答是你不能。您应该做的是在 ProviderScope 中调用 Provider。

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();
  runApp(
    ProviderScope(
      child: MyApp(),
    ),
  );
}

class MyApp extends ConsumerWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context, ScopedReader watch) {
    final config = watch(configProvider);
    return Container();
  }
}