【问题标题】:Cloud Firestore error when getting data error: argument type mismatch获取数据时出现 Cloud Firestore 错误错误:参数类型不匹配
【发布时间】:2021-03-28 16:34:52
【问题描述】:

我正在使用 dart SDK >=2.12.0

获取数据

import 'package:bloc_todo2/data/models/todo.dart';
import 'package:cloud_firestore/cloud_firestore.dart';

class FirebaseTodoRepository {
  var todoPath = FirebaseFirestore.instance.collection('todos');

  Future<List<Todo>> getTodo() async {
    List<Todo> todoList = [];
    var response = await todoPath.get();
    response.docs.forEach((element) {
      todoList.add(Todo.fromMap(element.data())); // this line gives ERROR 
    });
    return todoList;
  }
}

错误

The argument type 'Map<String, dynamic>?' can't be assigned to the parameter type 'Map<String, dynamic>'.

MODEL fromMap 方法

 factory Todo.fromMap(Map<String, dynamic> map) {
    return Todo(
      complete: map['complete'],
      text: map['text'],
      id: map['id'],
      colorHex: map['colorHex'],
    );
  }

【问题讨论】:

    标签: flutter dart google-cloud-firestore


    【解决方案1】:

    试试这个:

    factory Todo.fromMap(Map&lt;String, dynamic&gt;? map)

    它使您的地图可以为空。

    或者将!添加到你声明的变量中,告诉dart它们不会为空。

    【讨论】:

    • 不幸的是还是一样
    • 您使用的是最新版本的 Firestore 依赖吗?
    • 是的,我将 1.03 用于 Firestore,将 1.0.2 用于核心
    • 添加后!声明变量它正在工作。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-23
    • 1970-01-01
    • 2016-03-03
    • 2017-10-17
    • 2021-02-19
    • 1970-01-01
    • 2019-07-18
    相关资源
    最近更新 更多