index.dart 4.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  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. bool isBack = false;
  15. AddressController addressController = AddressController.t;
  16. final addressList = Rx<List<Address>>([]);
  17. @override
  18. void beforeShow() {
  19. super.beforeShow();
  20. EasyLoading.show(status: '数据加载中...');
  21. getAddress().then((value) {
  22. final list = <Address>[];
  23. value['records'].forEach((item) {
  24. list.add(Address.fromJson(item));
  25. });
  26. addressList(list);
  27. EasyLoading.dismiss();
  28. });
  29. if (Get.arguments != null) {
  30. isBack = Get.arguments['isBack'];
  31. }
  32. }
  33. void onChange(id) {
  34. print(id);
  35. addressDefault(id).then((value) {
  36. getAddress().then((value) {
  37. final defaultlist = [...addressList.value];
  38. for (var element in defaultlist) {
  39. if (element.isDefault == true) {
  40. element.isDefault = false;
  41. } else {
  42. element.isDefault = true;
  43. }
  44. }
  45. addressList(defaultlist);
  46. print(addressList.value);
  47. });
  48. // final defaultlist = [...addressList.value];
  49. // for (var element in defaultlist) {
  50. // if (element.isDefault == true) {
  51. // defaultlist.selected = true;
  52. // }
  53. // }
  54. // addressList(defaultlist);
  55. // print(addressList.value);
  56. });
  57. }
  58. void onDelete(id) {
  59. print(id);
  60. modal.showDialog(
  61. title: '提示',
  62. content: Container(
  63. alignment: Alignment.center,
  64. child: Text('确定要删除此地址吗?'),
  65. ),
  66. onCancel: () => true,
  67. onConfirm: () => {
  68. addressDelete(id).then((value) {
  69. final newslist = [...addressList()];
  70. for (var item in addressList()) {
  71. if (item.addressId == id) {
  72. newslist.remove(item);
  73. }
  74. }
  75. addressList(newslist);
  76. Fluttertoast.showToast(msg: '删除成功!');
  77. }),
  78. });
  79. }
  80. @override
  81. Widget builder(BuildContext context) {
  82. naviTitle = '地址管理';
  83. return ListView(
  84. children: [
  85. Container(
  86. padding: EdgeInsets.all(15.w),
  87. child:
  88. Obx(() => Column(
  89. //左对齐
  90. crossAxisAlignment: CrossAxisAlignment.start,
  91. children: [
  92. Column(
  93. children: addressList()
  94. .asMap()
  95. .keys
  96. .map(
  97. (e) => AddressCard(
  98. No: e + 1,
  99. item: addressList.value[e],
  100. isBack: isBack,
  101. onChange: () {
  102. onChange(addressList.value[e].addressId);
  103. },
  104. onEdit: () {
  105. Get.offNamed('/addAddress', arguments: {
  106. 'id': addressList.value[e].addressId,
  107. 'item':
  108. addressList.value[e].address.toString()
  109. });
  110. },
  111. onDelete: () {
  112. onDelete(addressList.value[e].addressId);
  113. },
  114. onBack: () {
  115. //选择地址
  116. addressController.address.value =
  117. addressList.value[e];
  118. Get.back();
  119. },
  120. ),
  121. )
  122. .toList()),
  123. DefaultButton(
  124. color: const Color(0xffffffff),
  125. backColor: const Color(0xFFFF703B),
  126. width: 345.w,
  127. height: 49.h,
  128. text: '+新增地址',
  129. onPressed: () {
  130. Get.offNamed('/addAddress');
  131. },
  132. margin: const EdgeInsets.all(0),
  133. fontSize: 20.sp,
  134. radius: 24.5.w,
  135. ),
  136. ],
  137. )),
  138. ),
  139. ],
  140. );
  141. }
  142. }