order_home_screen.dart 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. import 'package:flutter/material.dart';
  2. import 'package:flutter_svg/svg.dart';
  3. import 'package:fooddeliveryapp/model/constants.dart';
  4. import 'package:fooddeliveryapp/model/product.dart';
  5. import 'package:fooddeliveryapp/pages/cart.dart';
  6. import 'package:fooddeliveryapp/pages/order/components/body.dart';
  7. class HomeSrcreen extends StatelessWidget {
  8. static const routeName = '/order';
  9. final int index;
  10. //构造函数 同时传入桌号
  11. HomeSrcreen({Key key, @required this.index}) : super(key: key);
  12. @override
  13. Widget build(BuildContext context) {
  14. return DefaultTabController(
  15. length: getMyTabs().length,
  16. child: Scaffold(
  17. appBar: buildAppBar(context),
  18. body: Body(),
  19. ),
  20. );
  21. }
  22. AppBar buildAppBar(BuildContext context) {
  23. return AppBar(
  24. backgroundColor: Colors.white,
  25. elevation: 0,
  26. title: Padding(
  27. padding: const EdgeInsets.symmetric(horizontal: kDefaultPaddin),
  28. child: Text(
  29. "海底捞火锅",
  30. style: Theme.of(context)
  31. .textTheme
  32. .headline5
  33. .copyWith(fontWeight: FontWeight.bold),
  34. ),
  35. ),
  36. leading: IconButton(
  37. icon: SvgPicture.asset("assets/icons/back.svg"),
  38. onPressed: () {},
  39. ),
  40. actions: <Widget>[
  41. // IconButton(
  42. // icon: SvgPicture.asset(
  43. // "assets/icons/search.svg",
  44. // // By default our icon color is white
  45. // color: kTextColor,
  46. // ),
  47. // onPressed: () {},
  48. // ),
  49. IconButton(
  50. icon: SvgPicture.asset(
  51. "assets/icons/cart.svg",
  52. // By default our icon color is white
  53. color: kTextColor,
  54. ),
  55. onPressed: () {
  56. Navigator.pushNamed(context, OrderCart.routeName, arguments: index);
  57. },
  58. ),
  59. SizedBox(width: kDefaultPaddin / 2)
  60. ],
  61. bottom: TabBar(tabs: getMyTabs().map((e) => e.tab).toList()),
  62. );
  63. }
  64. }
  65. List<MyTab> getMyTabs() {
  66. return [
  67. MyTab(
  68. Tab(
  69. child: Text(
  70. "锅底",
  71. style: TextStyle(color: Colors.black),
  72. ),
  73. ),
  74. Menu(
  75. productsList: productsguodi,
  76. ),
  77. ),
  78. MyTab(
  79. Tab(
  80. child: Text(
  81. "荤菜",
  82. style: TextStyle(color: Colors.black),
  83. ),
  84. ),
  85. // Icon(Icons.directions_transit, color: Colors.pink, size: 60),
  86. Menu(productsList: productshuncai),
  87. ),
  88. MyTab(
  89. Tab(
  90. child: Text(
  91. "素菜",
  92. style: TextStyle(color: Colors.black),
  93. ),
  94. ),
  95. // Icon(Icons.directions_bike, color: Colors.pink, size: 60),
  96. Menu(productsList: productssucai),
  97. ),
  98. MyTab(
  99. Tab(
  100. child: Text(
  101. "主食",
  102. style: TextStyle(color: Colors.black),
  103. ),
  104. ),
  105. // Icon(Icons.directions_bike, color: Colors.pink, size: 60),
  106. Menu(productsList: productsZhushi),
  107. ),
  108. MyTab(
  109. Tab(
  110. child: Text(
  111. "酒水",
  112. style: TextStyle(color: Colors.black),
  113. ),
  114. ),
  115. // Icon(Icons.directions_bike, color: Colors.pink, size: 60),
  116. Menu(productsList: productsJiushui),
  117. ),
  118. MyTab(
  119. Tab(
  120. child: Text(
  121. "调料",
  122. style: TextStyle(color: Colors.black),
  123. ),
  124. ),
  125. // Icon(Icons.directions_bike, color: Colors.pink, size: 60),
  126. Menu(productsList: productsTiaoliao),
  127. )
  128. ];
  129. }
  130. /// 因此抽象成独立的类
  131. class MyTab {
  132. Tab tab;
  133. Widget body;
  134. MyTab(this.tab, this.body);
  135. }