所以我使用颤振游戏模板,我发现:
ProxyProvider2<SettingsController, ValueNotifier<AppLifecycleState>,
AudioController>(
// Ensures that the AudioController is created on startup,
// and not "only when it's needed", as is default behavior.
// This way, music starts immediately.
lazy: false,
create: (context) => AudioController()..initialize(),
update: (context, settings, lifecycleNotifier, audio) {
if (audio == null) throw ArgumentError.notNull();
audio.attachSettings(settings);
audio.attachLifecycleNotifier(lifecycleNotifier);
return audio;
},
dispose: (context, audio) => audio.dispose(),
),
但不幸的是我不喜欢提供者。如何将此供应商转换为河畔吊舱?
发布于 2022-09-29 11:14:02
在Riverpod中,相当于:
final settingsProvider = Provider<SettingsController>(...);
final appLifecycleStateProvider = Provider<ValueNotifier<AppLifecycleState>>(...);
final audioControllerProivder = Provider<AudioController>((ref) {
final audio = AudioController()..initialize();
ref.onDispose(audio.dispose);
ref.listen<SettingsController>(settingsProvider, (prev, next) {
audio.attachSettings(next);
});
ref.listen<ValueNotifier<AppLifecycleState>>(appLifecycleStateProvider, (prev, next) {
audio.attachLifecycleNotifier(next);
});
return audio;
});
尽管有可能通过使用ref.watch
来进一步简化这一点。但是上面的片段应该是个好的开始。
发布于 2022-10-26 08:19:20
使用ref.listen不起作用,我所做的就是将它转换为ref.watch
https://stackoverflow.com/questions/73891043
复制相似问题