参数类型 'List<CommentData>' 不能分配给参数类型 'List<Widget>

时间:2021-04-09 04:44:53

标签: firebase flutter flutter-listview

我正在尝试使用从 firebase 查询的数据构建列表视图。但是我有一个错误'The argument type 'List < CommentData >' can't beassigned to the parameter type 'List< Widget >' 代码如下

    Widget buildComments() {
    if (this.didFetchComments == false) {
      return FutureBuilder<List<CommentData>>(
          future: commentService.getComments(),
          builder: (context, snapshot) {
            if (!snapshot.hasData)
              return Container(
                  alignment: FractionalOffset.center,
                  child: CircularProgressIndicator());

            this.didFetchComments = true;
            this.fetchedComments = snapshot.data;
            return ListView(
              children: snapshot.data,  // where i'm having error
            );
          });
    } else {
      return ListView(children: this.fetchedComments); 
    }
  }

我该如何解决这个问题..

3 个答案:

答案 0 :(得分:1)

ListView 需要 List<Widgets>,但您正在传递 List<CommentData>

您可以将 ListView 修改为以下内容以纠正错误。

ListView.builder(
  itemCount: snapshot.data.length,
  itemBuilder: (context, index) {
    return Text(snapshot.data[index]['key']); //Any widget you want to use.
    },

);

答案 1 :(得分:0)

错误会自己说话

<块引用>

无法将参数类型“List<CommentData>”分配给参数类型“List<Widget>

如果你想创建 List Text 小部件来显示评论,你可以使用

return ListView.builder(
  itemCount: snapshot.data.length,
  itemBuilder: (context, index) => Text(snapshot.data[index].*), //What ever you want to show in from your model
);

答案 2 :(得分:0)

snapshot.data 返回 List<CommentData> 而 ListView 的孩子需要一个小部件列表,因此您会收到该错误。

尝试改变

return ListView(
   children: snapshot.data,
);

类似于:

return ListView(
   children: Text(snapshot.data[index].userName), //change userName to whatever field of CommentData class you want to show
);

我建议使用 ListView.Builder 来处理列表和索引。

相关问题