0

I am use Provider. I want mix different data source with stream.

Use case: Chat app where some message are from system (date/error message) but other are from database (Firestore).

For example for just get message from database I now use 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);
    });

But with StreamBuilder cannot mix data from other source. I want inject message at messages[index] for different message type.

Possible solution is create separate messages List and feed into ListView.builder:

 return new ListView.builder(

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

But how I can use Provider to mix stream from Firestore and also system message into messages List?

How I can bring together data source into final List messages?

Thanks for help!

FlutterFirebase
  • 2,163
  • 6
  • 28
  • 60

0 Answers0