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!