当前位置: 首页 > 知识库问答 >
问题:

类“List”在flatter中没有实例方法“call”

许博易
2023-03-14

我想做的是,我正在制作一个具有相同uid的所有文档的未来列表,然后使用FutureBuilder制作一个ListView。

给我错误的部分是,

body: FutureBuilder(
        future: listBuilder(),
        builder: (context, snapshot) {
          if(snapshot.hasData == null){
            return Container();
          }
          return ListView(
            padding: const EdgeInsets.only(top: 20.0),
            children: snapshot.data((data) => _buildListItem(context, data)).toList(),
          );
        },
      ),
Future listBuilder() async {
    final FirebaseUser user = await FirebaseAuth.instance.currentUser();
    final String uid = user.uid;
    List<DocumentSnapshot> list = [];
    Firestore.instance
        .collection('entries')
        .where("uid", isEqualTo: uid)
        .snapshots()
        .listen((data) => data.documents.forEach((doc) => list.add(doc)));

    print("------------------------------------------------------------------");
    return list;
  }
Widget _buildListItem(BuildContext context, DocumentSnapshot snapshot) {
    return Container(
      padding: const EdgeInsets.symmetric(horizontal: 16.0),
      child: InkWell(
        child: Row(
          children: <Widget>[
            Expanded(
              child: ListTile(
                leading: Text(
                  snapshot.data['type'],
                  style: TextStyle(
                    fontSize: 30,
                  ),
                ),
                title: Text(snapshot.data['description'],
                    style: TextStyle(
                      fontSize: 30,
                    )),
                subtitle: Text(snapshot.data['time'].toDate().toString(),
                    style: TextStyle(
                      fontSize: 15,
                    )),
                trailing: Text(snapshot.data['value'].toString(),
                    style: TextStyle(
                      fontSize: 25,
                    )),
              ), 
            )
          ],
        ),
      ),
    );
  }

这里是错误,

Class 'List<DocumentSnapshot>' has no instance method 'call'.
Receiver: Instance(length:3) of '_GrowableList'
Tried calling: call(Closure: (dynamic) => Widget)

非常感谢。

共有1个答案

张通
2023-03-14

使用map方法。

这样地

     ...
children: snapshot.data.map((data)=>_buildListItem(context,data)).toList(),
     ...
 类似资料:
  • 我正在尝试实现一个功能,其中应用程序以网格模式显示除当前用户之外的所有用户的详细信息。我一直试图将分配给,然后在中应用值。但是它会抛出一个错误。 新:如果我将,中的将为空,而不是抛出异常。 数据库类 例外

  • 我试图在java中使用Hibernate和TypedQuery。 我试图调用的方法有一个签名 我想像bellow一样调用它,但是用一个真实的实例替换null。 上面的代码经过编译,但显然带有空指针异常。 如果我对擦除的理解是正确的,那么只要我得到类对象的一个实例,这就行了,因为所有泛型类型信息在运行时都会丢失。 是否有任何方法,我可以得到一个类的实例,我可以分配给变量cls,使这个代码将工作?

  • 生成了以下NoSuchMethodError:类“QuerySnapshot”没有实例方法“Call”。接收方:“QuerySnapshot”实例尝试调用:call() 抛出异常时,这是堆栈:#0object.nosuchmethod(dart:core-patch/object_patch.dart:51:5)#1_HomeKitchenListState.build。(包:pigeon/coo

  • 这是我的错误行: 这是我的代码:

  • 我正在将应用程序设置为在play store上上载,但play console显示错误,您需要为APK或Android应用程序包使用不同的版本代码,因为您已经有一个版本代码为1的应用程序包。我试着在Android系统中更改版本代码

  • 问题内容: 我一直在寻找一个问题:从其字符串名称实例化一个类,该字符串名称描述了如何在具有名称时实例化一个类。有没有办法用Java做到这一点?我将拥有包名称和类名称,并且我需要能够创建具有该特定名称的对象。 问题答案: 两种方式: 方法1-仅适用于具有无参数构造函数的类 如果你的类具有无参数构造函数,则可以使用并使用该方法创建一个实例(尽管请注意,此方法通常被认为是有害的,因为它可以击败Java的