Как смешать стрим с провайдером? - PullRequest
0 голосов
/ 05 октября 2019

Я использую Provider. Я хочу смешать другой источник данных с stream.

Вариант использования : приложение чата, в котором некоторые сообщения поступают из системы (дата / сообщение об ошибке), а другие - из базы данных (Firestore).

Например, просто получить сообщениеиз базы данных я сейчас использую StreamBuilder:

StreamBuilder<QuerySnapshot>(
      stream: Firestore.instance.collection('message').snapshots(),
      builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {


    return new ListView.builder(
    itemCount: snapshot.data.documents.length,
    itemBuilder: (context, index) {
    return messageBuilder(snapshot.data.documents[index], xa);
    });

Но с StreamBuilder нельзя смешивать данные из другого источника. Я хочу ввести сообщение на messages[index] для другого типа сообщения.

Возможное решение - создать отдельный список сообщений и передать в ListView.builder:

 return new ListView.builder(

    itemCount: messages.length,
    itemBuilder: (context, index) {
    final message = messages[index];
    return messageBuilder(message, xa);
    });

Но как я могу использовать Providerсмешать поток из Firestore, а также системное сообщение в messages List?

Как собрать источник данных в final List messages?

Спасибо за помощь!

...