[baozhangchao] 3 лет назад
Родитель
Сommit
f638277c37

Двоичные данные
.gradle/6.8/fileChanges/last-build.bin Просмотреть файл


Двоичные данные
.gradle/6.8/fileHashes/fileHashes.lock Просмотреть файл


+ 0
- 0
.gradle/6.8/gc.properties Просмотреть файл


Двоичные данные
.gradle/buildOutputCleanup/buildOutputCleanup.lock Просмотреть файл


+ 0
- 2
.gradle/buildOutputCleanup/cache.properties Просмотреть файл

@@ -1,2 +0,0 @@
1
-#Wed Apr 20 15:13:32 CST 2022
2
-gradle.version=6.8

Двоичные данные
.gradle/checksums/checksums.lock Просмотреть файл


+ 0
- 0
.gradle/configuration-cache/gc.properties Просмотреть файл


+ 0
- 0
.gradle/vcs-1/gc.properties Просмотреть файл


+ 20
- 1
lib/models/entities/Address.dart Просмотреть файл

@@ -1,14 +1,33 @@
1 1
 class Address {
2 2
   String? address;
3 3
   bool? isDefault;
4
+  String? addressId;
5
+  String? ownerType;
6
+  String? ownerId;
7
+  num? sortNo;
8
+  String? orgId;
9
+  num? status;
10
+
4 11
   Address();
5 12
 
6 13
   Address.fromJson(Map<String, dynamic> json)
7 14
       : address = json["address"],
8
-        isDefault = json["isDefault"];
15
+        isDefault = json["isDefault"],
16
+        addressId = json["addressId"],
17
+        ownerType = json["ownerType"],
18
+        ownerId = json["ownerId"],
19
+        sortNo = json["sortNo"],
20
+        orgId = json["orgId"],
21
+        status = json["status"];
9 22
 
10 23
   Map<String, dynamic> toJson() => {
11 24
         'address': address,
12 25
         'isDefault': isDefault,
26
+        'addressId': addressId,
27
+        'ownerType': ownerType,
28
+        'ownerId': ownerId,
29
+        'sortNo': sortNo,
30
+        'orgId': orgId,
31
+        'status': status,
13 32
       };
14 33
 }

+ 24
- 6
lib/pages/addAddress/index.dart Просмотреть файл

@@ -1,4 +1,5 @@
1 1
 import 'package:farmer_client/models/entities/Address.dart';
2
+import 'package:farmer_client/services/address.dart';
2 3
 import 'package:farmer_client/widgets/DefaultButton.dart';
3 4
 import 'package:farmer_client/widgets/layout/BasicPage.dart';
4 5
 import 'package:flutter/material.dart';
@@ -10,13 +11,16 @@ class AddAddress extends BasicPage {
10 11
 
11 12
   final address =Rx<Address>(Address());
12 13
   late String text = '';
14
+  late String id = '';
13 15
 
14 16
   @override
15 17
   void beforeShow() {
16 18
     super.beforeShow();
17 19
     if (Get.arguments != null) {
18
-      address.value = Get.arguments['item'];
19
-      text = address.value.address.toString();
20
+      print( Get.arguments['item']);
21
+      // address(Get.arguments['item']);
22
+      text = Get.arguments['item'];
23
+      id = Get.arguments['id'];
20 24
     }
21 25
   }
22 26
 
@@ -58,7 +62,7 @@ class AddAddress extends BasicPage {
58 62
                 floatingLabelBehavior: FloatingLabelBehavior.never,
59 63
               ),
60 64
               onChanged: (e) {
61
-                  address.value.address = e;
65
+                  address().address=e;
62 66
               },
63 67
             ),
64 68
           ),
@@ -73,9 +77,23 @@ class AddAddress extends BasicPage {
73 77
                 Fluttertoast.showToast(
74 78
                     msg: '请输入地址!');
75 79
               } else{
76
-                Fluttertoast.showToast(
77
-                    msg: '保存成功!');
78
-                Get.back();
80
+                if(text==''){
81
+                  addressSave(address().address.toString()).then((value){
82
+                    Fluttertoast.showToast(
83
+                        msg: '添加地址成功!');
84
+                    Get.back();
85
+                  });
86
+
87
+                }else{
88
+                  addressUpdate(id,address().address.toString()).then((value) {
89
+                    Fluttertoast.showToast(
90
+                        msg: '修改地址成功!');
91
+                    Get.back();
92
+                  });
93
+                  
94
+                }
95
+
96
+
79 97
               }
80 98
             },
81 99
             margin: const EdgeInsets.all(0),

+ 43
- 19
lib/pages/addressList/index.dart Просмотреть файл

@@ -8,35 +8,57 @@ import 'package:flutter_screenutil/flutter_screenutil.dart';
8 8
 import 'package:fluttertoast/fluttertoast.dart';
9 9
 import 'package:get/get.dart';
10 10
 
11
+import '../../services/address.dart';
12
+
11 13
 class AddressList extends BasicPage {
12 14
   bool isBack = false;
13 15
   AddressController addressController=AddressController.t;
16
+  final addressList = Rx<List<Address>>([]);
17
+
14 18
 
15 19
   @override
16 20
   void beforeShow() {
17 21
     super.beforeShow();
22
+    getAddress().then((value) {
23
+      final list = <Address>[];
24
+      value['records'].forEach((item) {
25
+        list.add(Address.fromJson(item));
26
+      });
27
+      addressList(list);
28
+    });
18 29
     if (Get.arguments != null) {
19 30
       isBack = Get.arguments['isBack'];
20 31
     }
21 32
   }
22 33
 
23
-  final addressList = Rx<List<Address>>([
24
-    Address.fromJson({'address': '777', 'isDefault': false}),
25
-    Address.fromJson({'address': '999', 'isDefault': false}),
26
-    Address.fromJson({'address': '这是一个正经的地址', 'isDefault': false}),
27
-  ]);
28 34
 
29
-  void onChange(index) {
30
-    for (var element in addressList.value) {
31
-      if (element.isDefault == true) {
32
-        element.isDefault = false;
35
+  void onChange(id) {
36
+    print(id);
37
+    addressDefault(id.toString()).then((value){
38
+      final defaultlist = [...addressList()];
39
+      for (var element in addressList()) {
40
+        if (element.isDefault == true) {
41
+          element.isDefault = false;
42
+        }
33 43
       }
34
-    }
35
-    addressList.value[index].isDefault = true;
44
+      addressList(defaultlist);
45
+    });
46
+
36 47
   }
37 48
 
38
-  void onDelete(index) {
39
-    Fluttertoast.showToast(msg: '删除成功!');
49
+  void onDelete(id) {
50
+    print(id);
51
+
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
+    });
40 62
   }
41 63
 
42 64
   @override
@@ -50,8 +72,8 @@ class AddressList extends BasicPage {
50 72
             //左对齐
51 73
             crossAxisAlignment: CrossAxisAlignment.start,
52 74
             children: [
53
-              Column(
54
-                  children: addressList.value
75
+              Obx(()=>Column(
76
+                  children: addressList()
55 77
                       .asMap()
56 78
                       .keys
57 79
                       .map(
@@ -60,22 +82,23 @@ class AddressList extends BasicPage {
60 82
                           item: addressList.value[e],
61 83
                           isBack: isBack,
62 84
                           onChange: () {
63
-                            onChange(e);
85
+                            onChange(addressList()[e].addressId);
64 86
                           },
65 87
                           onEdit: () {
66 88
                             Get.toNamed('/addAddress',
67
-                                arguments: {'item': addressList.value[e]});
89
+                                arguments: {'id':addressList.value[e].addressId,'item': addressList.value[e].address.toString()});
68 90
                           },
69 91
                           onDelete: () {
70
-                            onDelete(e);
92
+                            onDelete(addressList.value[e].addressId);
71 93
                           },
72 94
                           onBack: () {
95
+                            //选择地址
73 96
                             addressController.address.value=addressList.value[e];
74 97
                             Get.back();
75 98
                           },
76 99
                         ),
77 100
                       )
78
-                      .toList()),
101
+                      .toList()),),
79 102
               DefaultButton(
80 103
                 color: const Color(0xffffffff),
81 104
                 backColor: const Color(0xFFFF703B),
@@ -96,3 +119,4 @@ class AddressList extends BasicPage {
96 119
     );
97 120
   }
98 121
 }
122
+

+ 25
- 1
lib/pages/main/index.dart Просмотреть файл

@@ -1,15 +1,39 @@
1 1
 import 'package:farmer_client/pages/main/widgets/main/index.dart';
2 2
 import 'package:farmer_client/widgets/layout/BasicPage.dart';
3 3
 import 'package:flutter/material.dart';
4
+import 'package:get/get.dart';
5
+import 'package:get/get_rx/src/rx_types/rx_types.dart';
6
+
7
+import '../../models/entities/Address.dart';
8
+import '../../services/address.dart';
4 9
 
5 10
 class Main extends BasicPage {
6 11
   Main({Key? key}) : super(key: key) {
7 12
     tabIndex = 3;
8 13
     naviTitle = '我的';
9 14
   }
15
+  final addressListInfo = Rx<List<Address>>([]);
16
+
17
+  @override
18
+  void beforeShow() {
19
+    // TODO: implement beforeShow
20
+    super.beforeShow();
21
+    getAddress().then((value) {
22
+       List<Address> list = [];
23
+      value['records'].forEach((item) {
24
+        list.add(Address.fromJson(item));
25
+      });
26
+       addressListInfo(list);
27
+    });
28
+  }
29
+
10 30
 
11 31
   @override
12 32
   Widget builder(BuildContext context) {
13
-    return const MainPage();
33
+    return Obx(()=> MainPage(
34
+        item:addressListInfo()[0].address.toString()
35
+     )
36
+
37
+    );
14 38
   }
15 39
 }

+ 20
- 3
lib/pages/main/widgets/main/index.dart Просмотреть файл

@@ -1,3 +1,4 @@
1
+import 'package:farmer_client/models/entities/Address.dart';
1 2
 import 'package:get/get.dart';
2 3
 import 'package:get_storage/get_storage.dart';
3 4
 
@@ -8,16 +9,32 @@ import 'package:flutter/material.dart';
8 9
 import 'package:flutter_screenutil/flutter_screenutil.dart';
9 10
 
10 11
 class MainPage extends StatefulWidget {
11
-  const MainPage({Key? key}) : super(key: key);
12
+  final String item;
13
+
14
+
15
+
16
+   MainPage({Key? key, required this.item}) : super(key: key);
12 17
 
13 18
   @override
14
-  State<MainPage> createState() => _MainPageState();
19
+  State<MainPage> createState() => _MainPageState(item);
20
+
15 21
 }
16 22
 
17 23
 class _MainPageState extends State<MainPage> {
18 24
   GetStorage box = GetStorage();
25
+  late String item='请维护详细地址!';
26
+  _MainPageState(this.item);
27
+
28
+  @override
29
+  void initState() {
30
+    super.initState();
31
+    print('644444444444444+$item');
32
+
33
+  }
34
+
19 35
   @override
20 36
   Widget build(BuildContext context) {
37
+
21 38
     return Container(
22 39
       alignment: Alignment.center,
23 40
       child: Column(
@@ -25,7 +42,7 @@ class _MainPageState extends State<MainPage> {
25 42
           Column(
26 43
             children: [
27 44
               UserInfo(), //头部,头像手机号姓名
28
-              UserAddress(), //用户地址
45
+              UserAddress(item:item),//用户地址
29 46
               OtherColumn(), //功能菜单栏
30 47
               Container(
31 48
                 height: 70.h,

+ 6
- 2
lib/pages/main/widgets/main/widgets/UserAddress.dart Просмотреть файл

@@ -2,8 +2,12 @@ import 'package:flutter/material.dart';
2 2
 import 'package:flutter_screenutil/flutter_screenutil.dart';
3 3
 import 'package:get/get.dart';
4 4
 
5
+import '../../../../../models/entities/Address.dart';
6
+
5 7
 class UserAddress extends StatelessWidget {
6
-  const UserAddress({Key? key}) : super(key: key);
8
+  final String item;
9
+
10
+  const UserAddress({Key? key, required this.item}) : super(key: key);
7 11
 
8 12
   @override
9 13
   Widget build(BuildContext context) {
@@ -62,7 +66,7 @@ class UserAddress extends StatelessWidget {
62 66
                         Container(
63 67
                           width: 260,
64 68
                           child: Text(
65
-                            '请填写详细地址请填写详细地址请填写详细地址',
69
+                            item != null? item: '请设置默认地址',
66 70
                             softWrap: true,
67 71
                             maxLines: 1,
68 72
                             textAlign: TextAlign.left,

+ 73
- 0
lib/services/address.dart Просмотреть файл

@@ -0,0 +1,73 @@
1
+
2
+import 'package:dio/dio.dart';
3
+import 'package:farmer_client/utils/Request.dart';
4
+import 'package:fluttertoast/fluttertoast.dart';
5
+
6
+/**
7
+ * 地址列表
8
+ * @param {*} data
9
+ * @returns
10
+ */
11
+Future getAddress() async {
12
+  return request('/address',
13
+      options: Options(method: 'GET')).catchError((error) => {
14
+    Fluttertoast.showToast(msg: error.error['message']),
15
+  });
16
+}
17
+
18
+
19
+/**
20
+ * 地址保存
21
+ * @param {*} data
22
+ * @returns
23
+ */
24
+Future addressSave(String address) async {
25
+  return request('/address',
26
+      options: Options(method: 'POST'), data: {'address': address})
27
+      .catchError((error) => {
28
+    Fluttertoast.showToast(msg: error.error['message']),
29
+  });
30
+}
31
+
32
+
33
+
34
+/**
35
+ * 地址删除
36
+ * @param {*} data
37
+ * @returns
38
+ */
39
+Future addressDelete(String id)async{
40
+  return request('/address/$id',options: Options(method: 'DELETE')).catchError((error) =>
41
+  { Fluttertoast.showToast(
42
+      msg: error.error['message']
43
+  ),});
44
+
45
+}
46
+
47
+
48
+/**
49
+ * 地址修改更新
50
+ * @param {*} data
51
+ * @returns
52
+ */
53
+Future addressUpdate(String id,String address)async{
54
+  return request('/address/$id',options: Options(method: 'PUT'),data: {'address':address}).catchError((error) =>
55
+  { Fluttertoast.showToast(
56
+      msg: error.error['message']
57
+  ),});
58
+
59
+}
60
+
61
+
62
+/**
63
+ * 地址是否默认
64
+ * @param {*} data
65
+ * @returns
66
+ */
67
+Future addressDefault(String id)async{
68
+  return request('/address/$id/default',options: Options(method: 'PUT')).catchError((error) =>
69
+  { Fluttertoast.showToast(
70
+      msg: error.error['message']
71
+  ),});
72
+
73
+}

+ 3
- 3
pubspec.lock Просмотреть файл

@@ -335,7 +335,7 @@ packages:
335 335
       name: path_provider_android
336 336
       url: "https://pub.dartlang.org"
337 337
     source: hosted
338
-    version: "2.0.12"
338
+    version: "2.0.13"
339 339
   path_provider_ios:
340 340
     dependency: transitive
341 341
     description:
@@ -536,7 +536,7 @@ packages:
536 536
       name: win32
537 537
       url: "https://pub.dartlang.org"
538 538
     source: hosted
539
-    version: "2.5.1"
539
+    version: "2.5.2"
540 540
   xdg_directories:
541 541
     dependency: transitive
542 542
     description:
@@ -553,4 +553,4 @@ packages:
553 553
     version: "3.1.0"
554 554
 sdks:
555 555
   dart: ">=2.16.1 <3.0.0"
556
-  flutter: ">=2.8.0"
556
+  flutter: ">=2.8.1"