Không thể gán loại đối số 'Map <String, dynamic> Function ()' cho loại tham số 'Map <String, dynamic>'
Aug 26 2020
Điều này ban đầu có thể hoạt động nhưng sau khi cập nhật firebase, nó hiện đang mang lại cho tôi lỗi này. Tôi đã thêm dấu hoa thị vào phần đưa ra lỗi. Thông báo lỗi đã được thêm vào bên dưới mã.
import 'package:cloud_firestore/cloud_firestore.dart';
class Record {
final String name;
final int totalVotes;
final DocumentReference reference;
Record.fromMap(Map<String, dynamic> map, {this.reference})
: assert(map['name'] != null),
assert(map['totalVotes'] != null),
name = map['name'],
totalVotes = map['totalVotes'];
Record.fromSnapshot(DocumentSnapshot snapshot)
: this.fromMap(**snapshot.data**, reference: snapshot.reference);
@override
String toString() => "Record<$name:$totalVotes>";
}
class Voters {
String uid;
String voteId;
String markedVoteOption;
}
Không thể gán loại đối số 'Map <String, dynamic> Function ()' cho loại tham số 'Map <String, dynamic>'.
Trả lời
15 PeterHaddad Aug 26 2020 at 19:23
Hãy thử những cách sau:
Record.fromSnapshot(DocumentSnapshot snapshot)
: this.fromMap(snapshot.data(), reference: snapshot.reference);
data() là một phương pháp:
/// Contains all the data of this [DocumentSnapshot].
Map<String, dynamic> data() {
return _CodecUtility.replaceDelegatesWithValueInMap(
_delegate.data(), _firestore);
}
điều đó trả về một Map<String, dynamic>
4 hayashi-ay Dec 15 2020 at 21:48
Đó là vì DocumentSnapshot.data () là một hàm trả về Map<String, dynamic>.
Vì vậy, câu trả lời là:
Record.fromSnapshot(DocumentSnapshot snapshot)
: this.fromMap(snapshot.data(), reference: snapshot.reference);
1 Gene Dec 15 2020 at 04:26
Rõ ràng tất cả những gì cần thiết là dấu ngoặc đơn trên bản đồ
import 'package:cloud_firestore/cloud_firestore.dart';
class Record {
final String name;
final int votes;
final DocumentReference reference;
Record.fromMap(Map<String, dynamic> map(), {this.reference})
: assert(map()['name'] != null),
assert(map()['votes'] != null),
name = map()['name'],
votes = map()['votes'];
Record.fromSnapshot(DocumentSnapshot snapshot)
: this.fromMap(snapshot.data, reference: snapshot.reference);
@override
String toString() => "Record<$name:$votes>";
}
KennedyOwusu Aug 26 2020 at 19:28
Đây là cách tôi giải quyết nó.
import 'package:cloud_firestore/cloud_firestore.dart';
class Record {
final String name;
final int totalVotes;
final DocumentReference reference;
Record.fromMap(Map<String, dynamic> map(), {this.reference})
: assert(map()['name'] != null),
assert(map()['totalVotes'] != null),
name = map()['name'],
totalVotes = map()['totalVotes'];
Record.fromSnapshot(DocumentSnapshot snapshot)
: this.fromMap(snapshot.data, reference: snapshot.reference);
@override
String toString() => "Record<$name:$totalVotes>";
}
class Voters {
String uid;
String voteId;
String markedVoteOption;
}
/// Contains all the data of this [DocumentSnapshot].
Map<String, dynamic> data() {
return _CodecUtility.replaceDelegatesWithValueInMap(
_delegate.data(), _firestore);
}