I'm trying to get all user data fields from documents to table to compare users scores live.
This is my Firestore document:
right now the only thing I success to get is only the Collection Id and the documents files name(the uuid). any idea how to get user data fields?
this is what I've built for now:
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';
import '../welcome/welcome_screen.dart';
class Records extends StatefulWidget {
@override
_RecordsState createState() => _RecordsState();
}
@override
class _RecordsState extends State<Records> {
@override
Widget build(BuildContext context) {
return Center(
child: new Scaffold(
appBar: AppBar(
title: Text(" טבלת שיאים לשאלון מספר - " + IDController.text)),
body: new Stack(
fit: StackFit.expand,
children: [
new Image(
image: AssetImage(
"assets/background/zooc.jpg",
),
fit: BoxFit.cover,
height: double.infinity,
width: double.infinity,
alignment: Alignment.center,
),
new StreamBuilder(
stream: FirebaseFirestore.instance
.collection(IDController.text)
.orderBy('studentScore', descending: true)
.snapshots(),
builder: (context, snapshot) {
if (snapshot.hasError) return Text('Error = ${snapshot.error}');
if (snapshot.hasData) return new Text('המערכת טוענת נתונים...');
return new DataTable(
columns: <DataColumn>[
new DataColumn(label: Text('studentName')),
new DataColumn(label: Text('studentScore')),
new DataColumn(label: Text('endTime')),
],
rows: _createRows(snapshot.data),
);
},
),
],
),
),
);
}
List _createRows(QuerySnapshot snapshot) {
List newList = snapshot.docs.map(
(DocumentSnapshot documentSnapshot) {
return new DataRow(
cells: [
DataCell(Text(documentSnapshot['studentName'].toString())),
DataCell(Text(documentSnapshot['studentScore'].toString())),
DataCell(Text(documentSnapshot['endTime'].toString())),
],
);
},
).toList();
return newList;
}
}
Thanks, Kobi
