【发布时间】:2023-03-07 14:06:01
【问题描述】:
我正在 Flutter 中实现一个基于聊天的应用程序。我正在考虑使用 Provider 包来创建两个主要的通知程序:UserService 和 ChatService。第一个处理登录(以及与用户相关的所有其他功能),而后者处理特定于聊天的功能。但是,chatService 需要访问 UserService 以获得某些功能。我尝试使用 ProxyProvider,这是代码:
class _MyAppState extends State<MyApp> {
@override
Widget build(BuildContext context) {
return MultiProvider(
providers: [
ChangeNotifierProvider<UserService>(builder: (_) => UserService.instance()),
ChangeNotifierProxyProvider<UserService, ChatService>(builder: (_, user, chatService) => ChatService.init(user))
],
child: MaterialApp(
...
),
);
}
}
但是,当我运行应用程序时,flutter 会抛出此错误:
尝试使用带有 Listenable/Stream (ChatService) 子类型的 Provider。
这很可能是一个错误,因为提供者不会自动更新家属 当 ChatService 更新时。相反,请考虑将 Provider 更改为更具体的 处理更新机制的实现,例如:
- ListenableProvider
- ChangeNotifierProvider
- ValueListenableProvider
谢谢!
【问题讨论】:
-
我再次运行模拟器,现在,奇怪的是,它可以工作了。
标签: flutter state-management flutter-provider