参数类型'对象? Function()' 不能分配给参数类型 'Map<dynamic, dynamic>'

时间:2021-05-14 13:06:39

标签: flutter dart google-cloud-firestore

我正在尝试从 Firestore 导入玩家数据...这是我第一次尝试在线数据库

我正在学习本教程:https://www.raywenderlich.com/7426050-firebase-tutorial-for-flutter-getting-started

我收到标题中的错误。有人可以帮我吗?

它接缝是导致问题的 snap.data。我的研究表明,snapshot.data 是一个函数,但我不明白如何解决我的问题。

这里回答了一个类似的问题:

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

但是这个问题使用 MAP,而我的教程使用 JSON。它们是一样的吗?

如果它们是同一回事,请为我的天真道歉。

    import 'package:cloud_firestore/cloud_firestore.dart';
import 'person.dart';

class Player extends Person {
  final int _shirtNumber;
  final DateTime _dateOfBirth;

  DocumentReference _reference;

  Player(String _firstName, String _secondName, this._shirtNumber,
      this._dateOfBirth, this._reference)
      : super(_firstName, _secondName);

  int get shirtNumber => _shirtNumber;

  DateTime get dateOfBirth => _dateOfBirth;

  int get ageInDays => DateTime.now().difference(_dateOfBirth).inDays;

  int get age => ageInDays ~/ 365.25;

  DocumentReference get reference => _reference;

  factory Player.fromSnapshot(DocumentSnapshot snapshot) {

    Player newPlayer = Player.fromJson(snapshot.data);
    newPlayer._reference = snapshot.reference;
    return newPlayer;
  }

  factory Player.fromJson(Map<dynamic, dynamic> json) => _playerFromJson(json);

  Map<String, dynamic> toJson() => _playerToJson(this);
}

//Helpers

Player _playerFromJson(Map<dynamic, dynamic> json) {
  return Player(
      json['firstName'] as String,
      json['secondName'] as String,
      json['shirtNumber'] as int,
      json['dateOfBirth'] as DateTime,
      json['documentID'] as DocumentReference);
}

Map<String, dynamic> _playerToJson(Player instance) => <String, dynamic>{
      'firstName': instance.firstName,
      'secondName': instance.secondName,
      'shirtNumber': instance.shirtNumber,
      'dateOfBirth': instance.dateOfBirth,
    };

0 个答案:

没有答案