index.dart 3.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. import 'package:farmer_client/models/addressController.dart';
  2. import 'package:farmer_client/models/entities/Address.dart';
  3. import 'package:farmer_client/pages/addressList/widget/AddressCard.dart';
  4. import 'package:farmer_client/widgets/DefaultButton.dart';
  5. import 'package:farmer_client/widgets/layout/BasicPage.dart';
  6. import 'package:flutter/material.dart';
  7. import 'package:flutter_easyloading/flutter_easyloading.dart';
  8. import 'package:flutter_screenutil/flutter_screenutil.dart';
  9. import 'package:fluttertoast/fluttertoast.dart';
  10. import 'package:get/get.dart';
  11. import 'package:farmer_client/widgets/Modal.dart' as modal;
  12. import '../../services/address.dart';
  13. class AddressList extends BasicPage {
  14. //判断是否从订单页面跳转
  15. bool isBack = false;
  16. AddressController addressController = AddressController.t;
  17. @override
  18. void beforeShow() {
  19. super.beforeShow();
  20. if (addressController.addressList.value.isEmpty) {
  21. getList();
  22. }
  23. if (Get.arguments != null) {
  24. isBack = Get.arguments['isBack'];
  25. }
  26. }
  27. void getList() {
  28. EasyLoading.show(status: '数据加载中...');
  29. getAddress().then((value) {
  30. final list = <Address>[];
  31. value['records'].forEach((item) {
  32. list.add(Address.fromJson(item));
  33. });
  34. addressController.addressList(list);
  35. EasyLoading.dismiss();
  36. }).catchError((error) {
  37. EasyLoading.dismiss();
  38. Fluttertoast.showToast(msg: error.error['message']);
  39. });
  40. }
  41. void onChange(id) {
  42. addressDefault(id).then((value) {
  43. getList();
  44. });
  45. }
  46. void onDelete(id) {
  47. modal.showDialog(
  48. title: '提示',
  49. content: Container(
  50. alignment: Alignment.center,
  51. child: const Text('确定要删除此地址吗?'),
  52. ),
  53. onCancel: () => true,
  54. onConfirm: () {
  55. addressDelete(id).then((value) {
  56. List<Address> list = addressController.addressList.value.toList();
  57. list.removeWhere((element) => element.addressId == id);
  58. addressController.addressList(list);
  59. Fluttertoast.showToast(msg: '删除成功!');
  60. });
  61. });
  62. }
  63. Widget buildList() {
  64. return Obx(() {
  65. var index = 0;
  66. var list = addressController.addressList.value;
  67. List<Widget> children = list.map((item) {
  68. return AddressCard(
  69. No: index ++,
  70. item: item,
  71. isBack: isBack,
  72. onChange: () {
  73. onChange(item.addressId);
  74. },
  75. onEdit: () {
  76. Get.offNamed('/addAddress', arguments: {
  77. 'isBack': isBack,
  78. 'id': item.addressId,
  79. 'item': item.address.toString()
  80. });
  81. },
  82. onDelete: () {
  83. onDelete(item.addressId);
  84. },
  85. onBack: () {
  86. //选择地址
  87. addressController.address.value = item;
  88. Get.back();
  89. },
  90. );
  91. }).toList();
  92. return Column(children: children,);
  93. });
  94. }
  95. @override
  96. Widget builder(BuildContext context) {
  97. naviTitle = '地址管理';
  98. return ListView(
  99. children: [
  100. Container(
  101. padding: EdgeInsets.all(15.w),
  102. child: Column(
  103. //左对齐
  104. crossAxisAlignment: CrossAxisAlignment.start,
  105. children: [
  106. buildList(),
  107. DefaultButton(
  108. color: const Color(0xffffffff),
  109. backColor: const Color(0xFFFF703B),
  110. width: 345.w,
  111. height: 49.h,
  112. text: '+新增地址',
  113. onPressed: () {
  114. Get.offNamed('/addAddress', arguments: {'isBack': isBack});
  115. },
  116. margin: const EdgeInsets.all(0),
  117. fontSize: 20.sp,
  118. radius: 24.5.w,
  119. ),
  120. ],
  121. )),
  122. ],
  123. );
  124. }
  125. }