我有以下问题。我正在尝试从名为锦标赛的Firestore集合中接收数据。我正在从我的DatabaseService类中查询数据库。如下所示:
sid
2 100
30 11
56 5
73 25
78 2
132 1
..
8531 25
8616 2
9049 1
9125 6
9316 11
该小部件实现了FutureBuilder
class Collection<T> {
final Firestore _db = Firestore.instance;
final String path;
CollectionReference ref;
Collection({this.path}) {
ref = _db.collection(path);
}
Future<List<Tournament>> getData() async {
var snapshots = await ref.getDocuments();
return snapshots.documents
.map((doc) => Global.models[Tournament](doc.data))
.toList();
}
}
我想将Firestore数据反序列化为Tournament对象。我将锦标赛类定义为:
Widget build(BuildContext context) {
return FutureBuilder(
future: Global.tournamentRef.getData(),
builder: (BuildContext context, AsyncSnapshot snap) {
if (snap.connectionState == ConnectionState.done) {
List<Tournament> tournaments = snap.data;
...
最后一个重要的类是globals.dart
class Tournament {
String id;
String name;
String mode;
String owner;
int size;
Tournament({this.id, this.name, this.mode, this.owner, this.size});
factory Tournament.fromMap(Map data) {
return Tournament(
id: data["id"] ?? '',
mode: data["mode"] ?? '',
name: data["name"] ?? "group",
owner: data["owner"] ?? "",
size: data["size"] ?? 6);
}
}
它只是指定收集路径。我希望对数据进行反序列化,但是我不知道为什么它不返回任何内容。我尝试以一种简单的老式方式来查询数据库,例如
class Global {
static final Map models = {Tournament: (data) => Tournament.fromMap(data)};
static final Collection<Tournament> tournamentRef =
Collection<Tournament>(path: "tournaments");
}
这很好用,但是完全不能反序列化。我想我有时会错过一些东西,并且您可能会注意到,我仍然是Flutter / dart入门者,其中一些讨论的主题对我来说有点太复杂了。
感谢您的帮助。 谢谢