首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >向Riverpod提供服务

向Riverpod提供服务
EN

Stack Overflow用户
提问于 2022-09-29 06:17:18
回答 2查看 81关注 0票数 1

所以我使用颤振游戏模板,我发现:

代码语言:javascript
运行
复制
 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(),
          ),

但不幸的是我不喜欢提供者。如何将此供应商转换为河畔吊舱?

EN

回答 2

Stack Overflow用户

发布于 2022-09-29 11:14:02

在Riverpod中,相当于:

代码语言:javascript
运行
复制
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来进一步简化这一点。但是上面的片段应该是个好的开始。

票数 1
EN

Stack Overflow用户

发布于 2022-10-26 08:19:20

Remi Rousselet

使用ref.listen不起作用,我所做的就是将它转换为ref.watch

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73891043

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档