Использование firestore с json_serializable после нулевой безопасности

Я использую json_serializable и firestore. json_serializable создает фабричный метод с параметром Map<String, dynamic>, но после изменений нулевой безопасности firestore начинает возвращать Map<String, dynamic>? в качестве данных документа, и теперь я не могу вызвать фабрику json_serializable для сопоставления типов моих хранилищ огня, потому что отображается это сообщение об ошибке: The argument type 'Map<String, dynamic>?' can't be assigned to the parameter type 'Map<String, dynamic>'

Может кто-то помочь мне с этим? Я больше не могу использовать json_serializable с firestore?

Я написал такой пример:

      class Entity {
  const Entity({required this.id});

  final String id;

  factory Entity.fromJson(Map<String, dynamic> json) => _$EntityFromJson(json);
  Map<String, dynamic> toJson() => _$EntityToJson(this);
}

class Repository {
  Stream<List<Entity>> list() {
    return FirebaseFirestore.instance.collection('entity').snapshots().map((event) {
      return event.docs.map((e) {
        return Entity.fromJson(
          e.data() // The argument type 'Map<String, dynamic>?' can't be assigned to the parameter type 'Map<String, dynamic>'
        );
      }).toList();
    });
  }
}

1 ответ

Я не знаю, что это правильный способ, но я использую ключевое слово as для преобразования типа из Object в Map <String, dynamic> Пример изображения

      doc.data() as Map<String, dynamic>
Другие вопросы по тегам