|
|
@@ -1,6 +1,7 @@
|
|
|
+import 'package:cloud_firestore/cloud_firestore.dart';
|
|
|
import 'package:flutter/material.dart';
|
|
|
import 'package:physigo/database.dart';
|
|
|
-
|
|
|
+import '../models/user.dart';
|
|
|
|
|
|
class MyDataTable extends StatefulWidget {
|
|
|
const MyDataTable({Key? key}) : super(key: key);
|
|
|
@@ -11,44 +12,54 @@ class MyDataTable extends StatefulWidget {
|
|
|
|
|
|
class _MyDataTableState extends State<MyDataTable> {
|
|
|
|
|
|
- List userList = [];
|
|
|
|
|
|
@override
|
|
|
Widget build(BuildContext context) {
|
|
|
- return Scaffold(
|
|
|
- body: Center(
|
|
|
- child: buildDataTable(),
|
|
|
+
|
|
|
+ return Scaffold(
|
|
|
+ body: Center(
|
|
|
+ child: StreamBuilder<dynamic>(
|
|
|
+ stream: DatabaseManager().getUsersList(),
|
|
|
+ builder: (context, snapshot) {
|
|
|
+ if(snapshot.connectionState == ConnectionState.waiting){
|
|
|
+ return const Text('Wait a moment');
|
|
|
+ }
|
|
|
+ else if(snapshot.hasData) {
|
|
|
+ return buildDataTable(snapshot.data);
|
|
|
+ }
|
|
|
+ return const Text("Something went wrong");
|
|
|
+ },
|
|
|
+ ),
|
|
|
),
|
|
|
);
|
|
|
}
|
|
|
@override
|
|
|
void initState() {
|
|
|
super.initState();
|
|
|
- fetchUsers();
|
|
|
}
|
|
|
|
|
|
- fetchUsers() async{
|
|
|
- dynamic users = await DatabaseManager().getUsersList();
|
|
|
-
|
|
|
- if(users == null){
|
|
|
- print("Wrong");
|
|
|
- }
|
|
|
- else{
|
|
|
- setState(() {
|
|
|
- userList = users;
|
|
|
- });
|
|
|
- }
|
|
|
+ // fetchUsers() async{
|
|
|
+ // dynamic users = await DatabaseManager().getUsersList();
|
|
|
+ //
|
|
|
+ // if(users == null){
|
|
|
+ // print("Wrong");
|
|
|
+ // }
|
|
|
+ // else{
|
|
|
+ // setState(() {
|
|
|
+ // userList = users;
|
|
|
+ // });
|
|
|
+ // }
|
|
|
}
|
|
|
|
|
|
- Widget buildDataTable() {
|
|
|
+ Widget buildDataTable(snapshotData) {
|
|
|
final columns = ['ID', 'Name', 'points'];
|
|
|
|
|
|
return DataTable(
|
|
|
columns: getColumns(columns),
|
|
|
- rows: getRows(),
|
|
|
+ rows: getRows(snapshotData),
|
|
|
);
|
|
|
}
|
|
|
-
|
|
|
+ // Columns of ranking
|
|
|
List<DataColumn> getColumns(List<String> columns) {
|
|
|
return columns.map((String column) {
|
|
|
return DataColumn(
|
|
|
@@ -56,10 +67,12 @@ class _MyDataTableState extends State<MyDataTable> {
|
|
|
);
|
|
|
}).toList();
|
|
|
}
|
|
|
- List<DataRow> getRows() {
|
|
|
+
|
|
|
+ //Rows of ranking(id, name, total_points)
|
|
|
+ List<DataRow> getRows(dynamic snapshotData) {
|
|
|
List<DataRow> rows = [];
|
|
|
|
|
|
- userList.forEach((user) {
|
|
|
+ snapshotData.forEach((user) {
|
|
|
rows.add(
|
|
|
DataRow(
|
|
|
cells: [
|
|
|
@@ -67,7 +80,7 @@ class _MyDataTableState extends State<MyDataTable> {
|
|
|
Text("${user["shared_id"]}"),
|
|
|
),
|
|
|
DataCell(
|
|
|
- Text(user["name"]),
|
|
|
+ Text(user["name"],)
|
|
|
),
|
|
|
DataCell(
|
|
|
Text("${user["total_points"]}"),
|
|
|
@@ -78,7 +91,6 @@ class _MyDataTableState extends State<MyDataTable> {
|
|
|
});
|
|
|
return rows;
|
|
|
}
|
|
|
-}
|
|
|
|
|
|
|
|
|
|