index.dart 3.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. import 'package:flutter/material.dart';
  2. import 'package:get/get.dart';
  3. import 'package:flutter_screenutil/flutter_screenutil.dart';
  4. import 'package:farmer_client/models/app.dart';
  5. import 'package:farmer_client/models/entities/CardListModel.dart';
  6. import 'package:farmer_client/services/homeAPI.dart';
  7. import 'package:farmer_client/widgets/CarsCard.dart';
  8. import 'package:farmer_client/widgets/RefreshMoreList.dart';
  9. import 'package:farmer_client/widgets/layout/BasicPage.dart';
  10. import 'package:farmer_client/pages/home/widgets/searchBannerHeader.dart';
  11. import 'package:farmer_client/pages/MoreCars/index.dart';
  12. class Home extends BasicPage {
  13. Home({Key? key}) : super(key: key) {
  14. tabIndex = 0;
  15. naviTitle = '首页';
  16. }
  17. final machineryList = Rx<List<CardListModel>>([]);
  18. final params = Rx<Map<String, dynamic>>({
  19. 'pageSize': 10,
  20. 'location': AppController.t.locationStr ?? '112.087465,32.687507'
  21. });
  22. Function? Refresh;
  23. List<CardListModel> GetList(value) {
  24. List<CardListModel> list = [];
  25. if (value != null)
  26. value.forEach((item) => {list.add(CardListModel.fromJson(item))});
  27. return list;
  28. }
  29. @override
  30. Widget builder(BuildContext context) {
  31. return Container(
  32. decoration: const BoxDecoration(color: Colors.white),
  33. padding: EdgeInsets.fromLTRB(15.w, 5.w, 15.w, 0),
  34. child: Column(
  35. children: [
  36. const searchBannerHeader(),
  37. Row(
  38. mainAxisAlignment: MainAxisAlignment.spaceBetween,
  39. children: [
  40. Container(
  41. padding: EdgeInsets.symmetric(vertical: 15.h),
  42. child: Row(
  43. children: [
  44. Padding(
  45. padding: const EdgeInsets.only(right: 8),
  46. child: Image(
  47. image:
  48. const AssetImage('images/icons/carsListImga.png'),
  49. fit: BoxFit.cover,
  50. width: 20.w,
  51. ),
  52. ),
  53. Text(
  54. '农机列表',
  55. style: TextStyle(
  56. color: const Color(0xff222222),
  57. fontSize: 20.sp,
  58. fontWeight: FontWeight.bold),
  59. )
  60. ],
  61. ),
  62. ),
  63. GestureDetector(
  64. child: const Text('更多 >>'),
  65. onTap: () {
  66. Get.to(const MoreCars());
  67. },
  68. )
  69. ],
  70. ),
  71. Expanded(
  72. child: RefreshMoreList(
  73. pPrams: params,
  74. cardText: '暂无农机',
  75. fetch: getMachinery,
  76. useState: (state) {
  77. machineryList(GetList(state));
  78. },
  79. builder: (
  80. {required BuildContext context, required Function toggle}) {
  81. Refresh = toggle;
  82. return Obx(
  83. () => Column(
  84. children: machineryList.value
  85. .map(
  86. (item) => CarsCard(item: item),
  87. )
  88. .toList(),
  89. ),
  90. );
  91. },
  92. ),
  93. ),
  94. ],
  95. ),
  96. );
  97. }
  98. }