将ListView.builder()与Firebase实例一起使用,并且不输入itemBuilder部分

时间:2019-07-01 14:38:49

标签: firebase flutter dart

因此,下面的代码到达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代码中调试时看不到会导致它跳到那一行的原因。

0 个答案:

没有答案