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
但这无法完成,因为需要 Reader
而 ProviderScope
低于此水平
我如何在我的 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();
}
}
我想在 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
但这无法完成,因为需要 Reader
而 ProviderScope
低于此水平
我如何在我的 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();
}
}