Я пытаюсь использовать эту технику из кулинарной книги https://flutter.io/cookbook/lists/mixed-list/... Тем не менее, MessageItems для заголовка являются N, а не статическими ... Как использовать этот пример кода для N MessageItems на заголовок?
StreamBuilder<QuerySnapshot> buildByDateFb(
String documentRef, GlobalKey<ScaffoldState> scaffoldState) {
return StreamBuilder<QuerySnapshot>(
stream: Firestore.instance
.collection("schedule")
.document(documentRef.toLowerCase())
.collection("by_date")
.orderBy("day")
.orderBy("time")
.snapshots(),
builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
if (!snapshot.hasData) return const Text('Loading...');
final int messageCount = snapshot.data.documents.length;
List<ListItem> items = new List<ListItem>();
for(DocumentSnapshot item in snapshot.data.documents) {
var heading = HeadingItem(item['day']);
var row = MessageItem(item['className'], item['leadBy'], item['time']);
items.add(heading);
items.add(row);
}
return StickyList.builder(
itemCount: messageCount,
builder: (_, int index) {
final item = items[index];
if (item is HeadingItem) {
return HeaderRow(
child: _buildRowHeaderContents(item.day.toString())
);
} else if (item is MessageItem) {
return RegularRow(
child: ListTile(
leading: new CircleAvatar(
child: new Text(item.time.toString()),
radius: 27.0,
),
title: new Text(item.className),
subtitle: Text(item.leadBy)
)
);
}
},
);
},
);
}