Flutter

#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: ( ) => проголосовано) ] );