【问题标题】:how to convert _list(QuerySnapshot<Map<String, dynamic>> snapshot) into List<dynamic> in flutter 2.0如何在 Flutter 2.0 中将 _list(QuerySnapshot<Map<String, dynamic>> snapshot) 转换为 List<dynamic>
【发布时间】:2021-08-13 07:08:33
【问题描述】:

我正在尝试获取 List _list 但由于我将 Flutter 升级到 2.0,我不得不将我的代码更改为 _list(QuerySnapshot> 快照)。该类型没有长度,或者 elementAt 像普通的 List 类型。可以转换吗?

我的代码:

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)

错误信息: 错误:未为类型“列表函数(QuerySnapshot>)”定义运算符“[]”

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

【问题讨论】:

    标签: flutter flutter2.0


    【解决方案1】:

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

    所以,为了使用它,你应该首先正确地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
          )
      ..... 
    

    【讨论】:

    • 您需要通过调用.dataAsyncSnapshot 转换为QuerySnapshotsnapshot.data
    • 感谢 Nisanth 的回答。不幸的是,快照来自firebase,所以我在快照变量中得到了这种类型:'AsyncSnapshot>' 当 List myList = _list(snapshot);它说_list没有定义
    • 如果 _list 没有定义,那么你在当前的小部件代码中没有你的 _list 函数。在问题中发布更多内容。
    • 你说得对 Nisanth,我定义了,但现在错误出现在 List myList = _list(snapshot.data); : 表达式不计算为函数,因此无法调用。
    • 粘贴完整代码后使用pastebin.com并分享链接。
    猜你喜欢
    • 2018-12-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-26
    • 1970-01-01
    • 1970-01-01
    • 2021-03-27
    • 2021-11-11
    • 2020-08-22
    相关资源
    最近更新 更多