datatable.dart 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. import 'package:flutter/material.dart';
  2. import 'package:physigo/database.dart';
  3. class MyDataTable extends StatefulWidget {
  4. const MyDataTable({Key? key}) : super(key: key);
  5. @override
  6. State<MyDataTable> createState() => _MyDataTableState();
  7. }
  8. class _MyDataTableState extends State<MyDataTable> {
  9. List userList = [];
  10. @override
  11. Widget build(BuildContext context) {
  12. return Scaffold(
  13. body: Center(
  14. child: buildDataTable(),
  15. ),
  16. );
  17. }
  18. @override
  19. void initState() {
  20. super.initState();
  21. fetchUsers();
  22. }
  23. fetchUsers() async{
  24. dynamic users = await DatabaseManager().getUsersList();
  25. if(users == null){
  26. print("Wrong");
  27. }
  28. else{
  29. setState(() {
  30. userList = users;
  31. });
  32. }
  33. }
  34. Widget buildDataTable() {
  35. final columns = ['ID', 'Name', 'points'];
  36. return DataTable(
  37. columns: getColumns(columns),
  38. rows: getRows(),
  39. );
  40. }
  41. List<DataColumn> getColumns(List<String> columns) {
  42. return columns.map((String column) {
  43. return DataColumn(
  44. label: Text(column),
  45. );
  46. }).toList();
  47. }
  48. List<DataRow> getRows() {
  49. List<DataRow> rows = [];
  50. userList.forEach((user) {
  51. rows.add(
  52. DataRow(
  53. cells: [
  54. DataCell(
  55. Text("${user["shared_id"]}"),
  56. ),
  57. DataCell(
  58. Text(user["name"]),
  59. ),
  60. DataCell(
  61. Text("${user["total_points"]}"),
  62. ),
  63. ]
  64. )
  65. );
  66. });
  67. return rows;
  68. }
  69. }