Я реализую приложение на основе чата во 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 выдает эту ошибку:
Пытался использовать Provider с подтипом Listenable / Stream (ChatService).
Вероятно, это ошибка, поскольку поставщик не будет автоматически обновлять иждивенцев при обновлении ChatService. Вместо этого рассмотрите возможность изменения Provider для более конкретной реализации, которая обрабатывает механизм обновления, например:
- ListenableProvider
- ChangeNotifierProvider
- ValueListenableProvider
Спасибо!