#firebase #flutter #dart #provider #state-management
#firebase #flutter #dart #поставщик #управление состоянием
Вопрос:
Допустим, у меня есть следующий код. Приведенный ниже код прослушивает только одно значение: AuthService().user
. Как мне заставить моего провайдера прослушивать другое значение? Давайте назовем это значение : isVoted
.
Widget build(BuildContext context) {
return StreamProvider<SystemUser>.value(
value: AuthService().user,
child: MaterialApp(---))
}
Я с нетерпением жду вашего ответа. Большое вам спасибо.
Ответ №1:
Вы можете объединить эти два потока в один поток с помощью StreamGroup и прослушать его.
документы: https://api.flutter.dev/flutter/package-async_async/StreamGroup-class.html
В вашем случае:
Stream<Object> streamGroup = StreamGroup.merge([AuthService().user, isVoted]);
Widget build(BuildContext context) {
return StreamProvider<Object>.value(
value: streamGroup,
child: MaterialApp(---))
}
Комментарии:
1. Как насчет чего-то вроде
Widget build(BuildContext context) { return StreamProvider<SystemUser>.value( value: AuthService().user, StreamProvider<IsVoted>.value( value: isVoted, child: MaterialApp(---))) }
2. Вы можете использовать MultiProvider: pub.dev/documentation/provider/latest/provider/…
3. Multiprovider( поставщик: [StreamProvider<SystemUser>(create: ( ) => Authservice().user), StreamProivder<проголосовано>(.create: ( ) => проголосовано) ] );