table.dart 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. import 'package:flutter/material.dart';
  2. import 'package:provider/provider.dart';
  3. import 'models/table.dart';
  4. class TablePage extends StatefulWidget {
  5. static const String routeName = '/table';
  6. @override
  7. State<StatefulWidget> createState() {
  8. return _TableState();
  9. }
  10. }
  11. class _TableState extends State<TablePage> {
  12. @override
  13. Widget build(BuildContext context) {
  14. return Consumer<TableStatusList>(
  15. builder: (context, tableStatusList, child) {
  16. return Scaffold(
  17. body: NestedScrollView(
  18. headerSliverBuilder: (context, bool innerBoxIsScrolled) {
  19. return <Widget>[
  20. SliverAppBar(
  21. primary: true,
  22. expandedHeight: 200,
  23. pinned: true,
  24. floating: true,
  25. snap: false,
  26. flexibleSpace: _getFlexBar(tableStatusList),
  27. )
  28. ];
  29. },
  30. body: _getTableItems(tableStatusList),
  31. ));
  32. });
  33. }
  34. _getFlexBar(TableStatusList tableStatusList) {
  35. return FlexibleSpaceBar(
  36. title: Column(
  37. mainAxisSize: MainAxisSize.min,
  38. children: <Widget>[
  39. Text('目前开台数:' + tableStatusList.size().toString(),
  40. style: TextStyle(fontSize: 12)),
  41. Text(
  42. '剩余空位:'+(30-tableStatusList.size()).toString(),
  43. style: TextStyle(fontSize: 10),
  44. ),
  45. ],
  46. ),
  47. background: Image.network(
  48. 'https://picsum.photos/200/300/?blur',
  49. fit: BoxFit.fill,
  50. ),
  51. );
  52. }
  53. _getTableItems(tableStatusList) {
  54. return GridView.extent(
  55. maxCrossAxisExtent: 150,
  56. padding: EdgeInsets.all(4),
  57. mainAxisSpacing: 4,
  58. crossAxisSpacing: 4,
  59. children: _buildGridTileList(30, tableStatusList));
  60. }
  61. /*
  62. * 单写了一个私有方法,创建指定数量的组件
  63. * */
  64. List<Widget> _buildGridTileList(int count, TableStatusList tableStatusList) {
  65. List<Widget> containers = [];
  66. for (var i = 0; i < count; i++) {
  67. // var image = Image.network('https://picsum.photos/id/$i/150');
  68. // containers.add(image);
  69. containers.add(GestureDetector(
  70. child: Text(tableStatusList.isopen(i).toString() + "$i"),
  71. onTap: () {
  72. if (tableStatusList.isopen(i)) {
  73. //进行开台
  74. print("$i");
  75. } else {
  76. print("该桌未开台=> " + "$i");
  77. }
  78. },
  79. ));
  80. }
  81. return containers;
  82. }
  83. }