如何在 flutter 2.0 中将 _list(QuerySnapshot<Map<String, dynamic>> snapshot) 转换为 List<dynamic>

问题描述

我正在尝试获取 List _list 但自从我将 Flutter 升级到 2.0,我不得不将代码更改为 _list(QuerySnapshot> snapshot)。该类型没有长度,也没有像普通 List 类型那样的 elementAt。可以转换吗?

我的代码

List _list(QuerySnapshot<Map<String,dynamic>> snapshot) {
                              return snapshot.docs
                                  .map((doc) => new Brand(
                                        doc.data()['brandId'].toString(),))
                                  .toList();
                            }

稍后在我的代码中我需要使用一些字段:

return StaggeredGridView.countBuilder(
                              itemCount: _list.length,itemBuilder: (BuildContext context,int index) {
                                Brand brand = _list.elementAt(index) as Brand;
                                return InkWell(
                                  onTap: () {
                                    Navigator.of(context).pushNamed('/Brand',arguments: new RouteArgument(
                                            id: _list[index].id)

错误信息: 错误:运算符“[]”未为类型“List Function(QuerySnapshot>)”

定义

欢迎提出任何想法,提前致谢!

解决方法

到目前为止,您的 _list 被定义为返回 Function 而不是 List 本身的 List

所以,为了使用它,你应该首先正确地call它和必要的参数。

像这样,

List myList = _list(snapshot);  // I assume you have access to a snapshot variable
return StaggeredGridView.countBuilder(
  itemCount: myList .length,itemBuilder: (BuildContext context,int index) {
  Brand brand = myList.elementAt(index) as Brand;
  return InkWell(
    onTap: () {
      Navigator.of(context).pushNamed('/Brand',arguments: new RouteArgument(
        id: myList[index].id
      )
  .....