因此,下面的代码到达ListViewBuilder中itemCount所在的行。但是,无论出于何种原因,它甚至都没有踏上itemBuilder的生产线。
我试图彻底清除解决方案,删除itemCount,无论出于什么原因,什么都没有。我还包括了要调用的方法。
SingleChildScrollView(child:
StreamBuilder(
stream: Firestore.instance
.collection('achievements')
.where('category', isEqualTo: state)
.snapshots(),
builder: (context, snapshot) {
if (!snapshot.hasData) return const Text('Loading...');
if (snapshot.data.documents.length != 0)
return ListView.builder(
itemCount: snapshot.data.documents.length,
itemBuilder: (context, int index) =>
_buildAchievementItem(context, snapshot.data.documents[index]));
return Row();
},
)
),
下面是_buildAchievementItem()方法的内部。
Widget _buildAchievementItem(BuildContext context, DocumentSnapshot document) {
return ListTile(
title: Row(
children: <Widget>[
Expanded(
child: Text(
document['name'],
style: Theme.of(context).textTheme.headline,
),
),
Container(
decoration: const BoxDecoration(color: Color(0xffddddff)),
padding: const EdgeInsets.all(5.0),
child: Text(document['points'].toString(),
style: Theme.of(context).textTheme.display1),
)
],
)
);
}
相对来说比较扑朔迷离,但是在VS代码中调试时看不到会导致它跳到那一行的原因。