简体   繁体   中英

The argument type 'Object? Function()' can't be assigned to the parameter type 'Map<String, dynamic>'

I created a class called 'tasks' and implement it. I edit gradle files for connecting with firebase. I gain some errors in my code. So please help me to solve this error.

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;
      });
          
    });
    
}

This is my firestore class service

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;
  }
}

You need to change:

documentSnapshot.data

to this:

documentSnapshot.data()

.data() is a method and not a property of the DocumentSnapshot object.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM