【问题标题】:The argument type 'Object? Function()' can't be assigned to the parameter type 'Map<String, dynamic>'参数类型“对象? Function()' 不能分配给参数类型 'Map<String, dynamic>'
【发布时间】:2021-10-24 11:48:33
【问题描述】:

我创建了一个名为“tasks”的类并实现了它。我编辑用于连接 firebase 的 gradle 文件。我的代码中出现了一些错误。所以请帮我解决这个错误。

class _MyHomePageState extends State<MyHomePage> {
      
  late List<Task> items;
  FirestoreService fireServ = new FirestoreService();
  late StreamSubscription<QuerySnapshot> todoTasks;
    
  @override
  void initState() {
    super.initState();
    
    items= [];
    todoTasks.cancel();
    todoTasks=fireServ.getTaskList().listen((QuerySnapshot snapshot){
      final List<Task> tasks=snapshot.docs
        .map((documentSnapshot) => Task. fromMap(documentSnapshot.data))
            .toList();
    
      setState(() {
        this.items = tasks;
      });
          
    });
    
}

这是我的 Firestore 类服务

class FirestoreService {
  Future<Task> createTODOTask(String taskname, String taskdetails,String taskdate,String tasktime,String tasktype) async {
      final TransactionHandler createTransaction = (Transaction tx) async {
      final DocumentSnapshot ds = await tx.get(myCollection.doc());
      final Task task = new Task(taskname, taskdetails,taskdate,tasktime,tasktype);
      final Map<String, dynamic> data = task.toMap();
      await tx.set(ds.reference, data);
      return data;
    };

    return FirebaseFirestore.instance.runTransaction(createTransaction).then((mapData) {
      return Task.fromMap(mapData);
    }).catchError((error) {
      print('error: $error');
      return null;
    });
  }

  Stream<QuerySnapshot> getTaskList({int offset=0, int limit=0}) {
    Stream<QuerySnapshot> snapshots = myCollection.snapshots();

    if (offset != null) {
      snapshots = snapshots.skip(offset);
    }
    if (limit != null) {
      snapshots = snapshots.take(limit);
    }
    return snapshots;
  }
}

【问题讨论】:

    标签: firebase flutter google-cloud-firestore


    【解决方案1】:

    你需要改变:

    documentSnapshot.data
    

    到这里:

    documentSnapshot.data()
    

    .data() 是一个方法,而不是 DocumentSnapshot 对象的属性。

    【讨论】:

      猜你喜欢
      • 2020-12-15
      • 2021-03-23
      • 2020-12-27
      • 2021-08-29
      • 2021-10-02
      • 2021-08-17
      • 1970-01-01
      • 2021-11-06
      相关资源
      最近更新 更多