index.dart 4.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  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_screenutil/flutter_screenutil.dart';
  8. import 'package:fluttertoast/fluttertoast.dart';
  9. import 'package:get/get.dart';
  10. import 'package:farmer_client/widgets/Modal.dart' as modal;
  11. import '../../services/address.dart';
  12. class AddressList extends BasicPage {
  13. bool isBack = false;
  14. AddressController addressController = AddressController.t;
  15. final addressList = Rx<List<Address>>([]);
  16. @override
  17. void beforeShow() {
  18. super.beforeShow();
  19. getAddress().then((value) {
  20. final list = <Address>[];
  21. value['records'].forEach((item) {
  22. list.add(Address.fromJson(item));
  23. });
  24. addressList(list);
  25. });
  26. if (Get.arguments != null) {
  27. isBack = Get.arguments['isBack'];
  28. }
  29. }
  30. void onChange(id) {
  31. print(id);
  32. addressDefault(id.toString()).then((value) {
  33. final defaultlist = [...addressList()];
  34. for (var element in addressList()) {
  35. if (element.isDefault == true) {
  36. element.isDefault = false;
  37. }
  38. }
  39. addressList(defaultlist);
  40. });
  41. }
  42. void onDelete(id) {
  43. print(id);
  44. modal.showDialog(
  45. title: '提示',
  46. content: Container(
  47. alignment: Alignment.center,
  48. child: Text('确定要删除此地址吗?'),
  49. ),
  50. onCancel: () => true,
  51. onConfirm: () => {
  52. addressDelete(id).then((value) {
  53. final newslist = [...addressList()];
  54. for (var item in addressList()) {
  55. if (item.addressId == id) {
  56. newslist.remove(item);
  57. }
  58. }
  59. addressList(newslist);
  60. Fluttertoast.showToast(msg: '删除成功!');
  61. }),
  62. });
  63. }
  64. @override
  65. Widget builder(BuildContext context) {
  66. naviTitle = '地址管理';
  67. return Column(
  68. children: [
  69. Container(
  70. padding: EdgeInsets.all(15.w),
  71. child: Column(
  72. //左对齐
  73. crossAxisAlignment: CrossAxisAlignment.start,
  74. children: [
  75. Obx(
  76. () => Column(
  77. children: addressList()
  78. .asMap()
  79. .keys
  80. .map(
  81. (e) => AddressCard(
  82. No: e + 1,
  83. item: addressList.value[e],
  84. isBack: isBack,
  85. onChange: () {
  86. onChange(addressList()[e].addressId);
  87. },
  88. onEdit: () {
  89. Get.toNamed('/addAddress', arguments: {
  90. 'id': addressList.value[e].addressId,
  91. 'item': addressList.value[e].address.toString()
  92. });
  93. },
  94. onDelete: () {
  95. onDelete(addressList.value[e].addressId);
  96. },
  97. onBack: () {
  98. //选择地址
  99. addressController.address.value =
  100. addressList.value[e];
  101. Get.back();
  102. },
  103. ),
  104. )
  105. .toList()),
  106. ),
  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.toNamed('/addAddress');
  115. },
  116. margin: const EdgeInsets.all(0),
  117. fontSize: 20.sp,
  118. radius: 24.5.w,
  119. ),
  120. ],
  121. ),
  122. ),
  123. ],
  124. );
  125. }
  126. }