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); @override State createState() => _MyDataTableState(); } class _MyDataTableState extends State { @override Widget build(BuildContext context) { return Scaffold( body: Center( child: StreamBuilder( 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() async{ // dynamic users = await DatabaseManager().getUsersList(); // // if(users == null){ // print("Wrong"); // } // else{ // setState(() { // userList = users; // }); // } } Widget buildDataTable(snapshotData) { final columns = ['ID', 'Name', 'points']; return DataTable( columns: getColumns(columns), rows: getRows(snapshotData), ); } // Columns of ranking List getColumns(List columns) { return columns.map((String column) { return DataColumn( label: Text(column), ); }).toList(); } //Rows of ranking(id, name, total_points) List getRows(dynamic snapshotData) { List rows = []; snapshotData.forEach((user) { rows.add( DataRow( cells: [ DataCell( Text("${user["shared_id"]}"), ), DataCell( Text(user["name"],) ), DataCell( Text("${user["total_points"]}"), ), ] ) ); }); return rows; }