huxiaoqiang 4 年 前
コミット
3fdfed50dd

+ 19 - 4
lib/https/my_request.dart

@@ -66,7 +66,7 @@ checkLogin(SCallBack sCallBack, FCallBack fCallBack) {
       {
         '__user__': MyCookie().getUser(),
         'version': MyCookie().packageInfo.version,
-        'phone': Platform.isAndroid?'Android':'IOS'
+        'phone': Platform.isAndroid ? 'Android' : 'IOS'
       },
       sCallBack,
       fCallBack);
@@ -189,16 +189,31 @@ grabACoupon(int id) {
 void checkUnpaidThirdPartyOrders() {
   MyDio().query({
     "key": "order",
-    "filters": {"conditions": ["state == $orderStateUnpaid",'buyer_name LIKE ${MyCookie().getName()}']},
+    "filters": {
+      "or": true,
+      "conditions": [
+        "state == $orderStateUnpaid",
+        'buyer_uid==0',
+        'buyer_name LIKE ${MyCookie().getName()}'
+      ],
+      "filters": [
+        {
+          "conditions": [
+            "state == $orderStateUnpaid",
+            'buyer_uid==${MyCookie().getUID()}'
+          ]
+        }
+      ]
+    },
     "dims": orderDims,
     "paging": [1, 20],
     "order_by": ["create_time,DESC"]
   }, (response, hasError) {
-    if(!hasError){
+    if (!hasError) {
       SmartOrderBeanEntity entity = SmartOrderBeanEntity()
           .fromJson(json.decode(response.data.toString()));
       MyCookie().haveNoPay = entity.data.data.isNotEmpty;
       EventBus().emit('hasNoPay');
     }
-  }, (error) { });
+  }, (error) {});
 }

+ 36 - 25
lib/main.dart

@@ -12,6 +12,7 @@ import 'package:bbyyy/my_tools/loacion_util.dart';
 import 'package:bbyyy/my_tools/my_cookie.dart';
 import 'package:bbyyy/my_tools/my_tools.dart';
 import 'package:bbyyy/my_tools/order_processing/order_processing.dart';
+import 'package:bbyyy/my_tools/providers.dart';
 import 'package:bbyyy/paegs/login_page/login_page.dart';
 import 'package:bbyyy/paegs/pay_page/order_information_page.dart';
 import 'package:bbyyy/paegs/root_page/root_page.dart';
@@ -26,6 +27,7 @@ import 'package:flutter_local_notifications/flutter_local_notifications.dart';
 import 'package:flutter_localizations/flutter_localizations.dart';
 import 'package:flutter_svg/flutter_svg.dart';
 import 'package:fluwx/fluwx.dart';
+import 'package:provider/provider.dart';
 import 'package:pull_to_refresh/pull_to_refresh.dart';
 import 'package:rxdart/rxdart.dart';
 
@@ -69,8 +71,8 @@ class ReceivedNotification {
 }
 
 Future<void> main() async {
-  AMapFlutterLocation.setApiKey("156e225e52517b76ac2222f035a9ce3e", "548414a843a2ec9c383e34341b8c84df");
-
+  AMapFlutterLocation.setApiKey(
+      "156e225e52517b76ac2222f035a9ce3e", "548414a843a2ec9c383e34341b8c84df");
 
   WidgetsFlutterBinding.ensureInitialized();
   const AndroidInitializationSettings initializationSettingsAndroid =
@@ -108,7 +110,14 @@ Future<void> main() async {
     }
     selectNotificationSubject.add(payload);
   });
-  runApp(MyApp());
+  runApp(
+    MultiProvider(
+      providers: [
+        ChangeNotifierProvider(create: (_) => MyLocationProvider()),
+      ],
+      child: MyApp(),
+    ),
+  );
 }
 
 class MyApp extends StatelessWidget with WidgetsBindingObserver {
@@ -146,9 +155,9 @@ class MyApp extends StatelessWidget with WidgetsBindingObserver {
         couponBulletBox(arg);
       }
     });
-  EventBus().on('packageInfo', (arg) {
-    isItUnderReview();
-  });
+    EventBus().on('packageInfo', (arg) {
+      isItUnderReview();
+    });
     return super.createElement();
   }
 
@@ -222,7 +231,7 @@ class MyApp extends StatelessWidget with WidgetsBindingObserver {
       print('Clipboard-----\n${text.text}');
       clipboardT = text.text;
       // Clipboard.setData(ClipboardData(text: ''));
-      OrderProcessing().queryOrderTemplate(clipboardT,buildContext);
+      OrderProcessing().queryOrderTemplate(clipboardT, buildContext);
       // getOnlineTemplate();
     } catch (e) {
       PopUpQueue().onShow = false;
@@ -232,11 +241,9 @@ class MyApp extends StatelessWidget with WidgetsBindingObserver {
 
   //获取线上模板
   void getOnlineTemplate() {
-    MyDio().query({
-      'key': 'order_template',
-      "dims":orderTemplateDims,
-      "filters": {}
-    }, (response, hasError) {
+    MyDio().query(
+        {'key': 'order_template', "dims": orderTemplateDims, "filters": {}},
+        (response, hasError) {
       if (!hasError) {
         TemplateBeanEntity entity = TemplateBeanEntity()
             .fromJson(json.decode(response.data.toString()));
@@ -290,17 +297,20 @@ class MyApp extends StatelessWidget with WidgetsBindingObserver {
               } catch (e) {}
             }
           });
-          if(maxAmountOwner.isNotEmpty){
+          if (maxAmountOwner.isNotEmpty) {
             maxAmountOwner.forEach((element) {
-              if(MyCookie().getName().contains(element)||element.contains(MyCookie().getName())){
+              if (MyCookie().getName().contains(element) ||
+                  element.contains(MyCookie().getName())) {
                 commissionPayerNum = maxAmountNum;
               }
             });
           }
           print('maxAmount============\n$maxAmount\n==============');
           print('maxAmountNum==============\n$maxAmountNum\n==============');
-          print('maxAmountOwner==============\n${maxAmountOwner.toString()}\n==============');
-          print('commissionPayerNum================  \n$commissionPayerNum\n==============');
+          print(
+              'maxAmountOwner==============\n${maxAmountOwner.toString()}\n==============');
+          print(
+              'commissionPayerNum================  \n$commissionPayerNum\n==============');
           order.removeWhere((element) =>
               !element.seller.name
                   .contains(MyCookie().loginInformation.data.extra.name) &&
@@ -1327,20 +1337,21 @@ class MyApp extends StatelessWidget with WidgetsBindingObserver {
   }
 
   void isItUnderReview() {
-    MyDio().post('/model/appStoreReview', {
-      'version':MyCookie().packageInfo.version
-    }, (response, hasError) {
-      if(!hasError){
-        AppStoreReviewBeanEntity e = AppStoreReviewBeanEntity().fromJson(json.decode(response.data.toString()));
+    MyDio().post(
+        '/model/appStoreReview', {'version': MyCookie().packageInfo.version},
+        (response, hasError) {
+      if (!hasError) {
+        AppStoreReviewBeanEntity e = AppStoreReviewBeanEntity()
+            .fromJson(json.decode(response.data.toString()));
         print(e.data);
-        if(e.data&&Platform.isIOS){
-            MyCookie().underReview = true;
-        }else{
+        if (e.data && Platform.isIOS) {
+          MyCookie().underReview = true;
+        } else {
           MyCookie().underReview = false;
         }
         EventBus().emit('appStoreReview');
       }
-    }, (error) { });
+    }, (error) {});
   }
 }
 

+ 3 - 3
lib/my_tools/loacion_util.dart

@@ -3,6 +3,7 @@ import 'dart:io';
 
 import 'package:amap_flutter_location/amap_flutter_location.dart';
 import 'package:amap_flutter_location/amap_location_option.dart';
+import 'package:flutter/src/widgets/framework.dart';
 import 'package:permission_handler/permission_handler.dart';
 
 import 'my_tools.dart';
@@ -21,7 +22,7 @@ class LocationUtil {
   Map<String, Object> _locationResult;
   StreamSubscription<Map<String, Object>> _locationListener;
 
-  initLocation() {
+  initLocation(BuildContext context) {
     if (Platform.isIOS) {
       requestAccuracyAuthorization();
     }
@@ -31,8 +32,7 @@ class LocationUtil {
       result.forEach((key, value) {
         print('$key---------------$value');
       });
-        getAddressByLatitudeAndLongitude(double.parse('${result['latitude']}'), double.parse('${result['longitude']}'));
-
+        getAddressByLatitudeAndLongitude(double.parse('${result['latitude']}'), double.parse('${result['longitude']}'),context);
     });
   }
 

+ 2 - 2
lib/my_tools/my_cookie.dart

@@ -20,8 +20,8 @@ class MyCookie {
   //工厂构造函数
   factory MyCookie() => _singleton;
 
-  // String server = '172.16.104.19';
-  String server = 'bby.banghuo.net';
+  String server = '172.16.104.19';
+  // String server = 'bby.banghuo.net';
   //
   // String server = '39.108.225.84';
   SharedPreferences prefs;

+ 6 - 2
lib/my_tools/my_tools.dart

@@ -6,6 +6,7 @@ import 'package:bbyyy/beans/address_bean_entity.dart';
 import 'package:bbyyy/beans/new_msg_bean_entity.dart';
 import 'package:bbyyy/my_tools/easy_loading/easy_loading.dart';
 import 'package:bbyyy/my_tools/my_cookie.dart';
+import 'package:bbyyy/my_tools/providers.dart';
 import 'package:convert/convert.dart';
 import 'package:crypto/crypto.dart';
 import 'package:dio/dio.dart';
@@ -14,6 +15,7 @@ import 'package:flutter/services.dart';
 import 'package:flutter_image_compress/flutter_image_compress.dart';
 import 'package:image_cropper/image_cropper.dart';
 import 'package:image_picker/image_picker.dart';
+import 'package:provider/provider.dart';
 import 'package:pull_to_refresh/pull_to_refresh.dart';
 import 'package:uuid/uuid.dart';
 
@@ -276,13 +278,14 @@ String hideUID(String uid) {
   return uid.replaceRange(0, 4, '****');
 }
 
-getAddressByLatitudeAndLongitude(double latitude, double longitude) {
+getAddressByLatitudeAndLongitude(
+    double latitude, double longitude, BuildContext context) {
   print('getAddressByLatitudeAndLongitude');
   Dio()
       .get(
           'https://restapi.amap.com/v3/geocode/regeo?output=json&location=$longitude,$latitude&key=5dcd9f0ed7d51aefb5b2f73dba1069cb&radius=10&extensions=all')
       .then((value) {
-        print('value.toString()------------${value.toString()}');
+    print('value.toString()------------${value.toString()}');
     AddressBeanEntity addressBeanEntity =
         AddressBeanEntity().fromJson(json.decode(value.toString()));
     MyCookie().location = MyLocation(
@@ -292,6 +295,7 @@ getAddressByLatitudeAndLongitude(double latitude, double longitude) {
         district: addressBeanEntity.regeocode.addressComponent.district,
         latitude: latitude,
         longitude: longitude);
+    context.read<MyLocationProvider>().getLocation(latitude, longitude);
     EventBus().emit('getLocation');
   });
 }

+ 219 - 41
lib/my_tools/my_views.dart

@@ -2,6 +2,7 @@ import 'dart:convert';
 import 'dart:io';
 import 'dart:math' as math;
 
+import 'package:amap_flutter_base/amap_flutter_base.dart';
 import 'package:bbyyy/beans/ad_bean_entity.dart';
 import 'package:bbyyy/beans/android_app_version_bean_entity.dart';
 import 'package:bbyyy/beans/flow_bean_entity.dart';
@@ -20,6 +21,7 @@ import 'package:bbyyy/my_tools/global.dart';
 import 'package:bbyyy/my_tools/my_colors.dart';
 import 'package:bbyyy/my_tools/my_cookie.dart';
 import 'package:bbyyy/my_tools/my_tools.dart';
+import 'package:bbyyy/my_tools/providers.dart';
 import 'package:bbyyy/my_tools/role_permissions.dart';
 import 'package:bbyyy/paegs/gang_page/application_details_page/application_details_page.dart';
 import 'package:bbyyy/paegs/gang_page/gang_in_page/gang_in_page.dart';
@@ -39,12 +41,14 @@ import 'package:install_plugin/install_plugin.dart';
 import 'package:launch_review/launch_review.dart';
 import 'package:lpinyin/lpinyin.dart';
 import 'package:path_provider/path_provider.dart';
+import 'package:provider/provider.dart';
 
 import '../beans/complain_bean_entity.dart';
 import '../paegs/ad_details_page/ad_details_page.dart';
 import '../paegs/other_people_s_turnover_page/other_people_s_turnover_page.dart';
 import 'const.dart';
 import 'dims.dart';
+import 'map_util.dart';
 
 class MyViews {
   Widget netImg(String path, double h, double w,
@@ -317,8 +321,8 @@ class MyViews {
   }
 
   //我的订单、店铺订单item
-  Widget getNoPayGoodsItem(
-      SmartOrderBeanDataData data, BuildContext context, int ownerUid,int role) {
+  Widget getNoPayGoodsItem(SmartOrderBeanDataData data, BuildContext context,
+      int ownerUid, int role) {
     return Container(
       margin: EdgeInsets.only(bottom: 10),
       decoration: BoxDecoration(
@@ -621,7 +625,9 @@ class MyViews {
                     Row(
                       children: [
                         Text(
-                          flow.traderUid == 0 ? "" : 'ID:${hideUID(flow.traderUid.toString())}',
+                          flow.traderUid == 0
+                              ? ""
+                              : 'ID:${hideUID(flow.traderUid.toString())}',
                           style:
                               TextStyle(color: MyColors.c666666, fontSize: 12),
                         ),
@@ -760,7 +766,8 @@ class MyViews {
                               GestureDetector(
                                 onTap: () {
                                   MyTools().toPage(
-                                      context, ReleaseGoodsPage(data,''), (then) {
+                                      context, ReleaseGoodsPage(data, ''),
+                                      (then) {
                                     EventBus().emit('updateProduct');
                                   });
                                 },
@@ -1461,12 +1468,11 @@ class MyViews {
                       visible: data.role != shopUserMember,
                       child: Container(
                         decoration: BoxDecoration(
-                            color:  MyColors.cFFCD00,
+                            color: MyColors.cFFCD00,
                             borderRadius: BorderRadius.circular(8)),
                         height: 16,
                         padding: EdgeInsets.symmetric(horizontal: 4),
-                        child: myText(roleText(data.role),
-                            Colors.white, 10),
+                        child: myText(roleText(data.role), Colors.white, 10),
                         alignment: Alignment.center,
                         margin: EdgeInsets.only(left: 5),
                       ),
@@ -1878,19 +1884,22 @@ class MyViews {
           ],
         ),
       );
-    }else if (data.type == orderTypeScancodeAilyPay) {
+    } else if (data.type == orderTypeScancodeAilyPay) {
       //扫码收款
       return Container(
         margin: EdgeInsets.only(left: 10, right: 10),
         child: Row(
           children: [
             Container(
-              child: Icon(Icons.qr_code_outlined,color: Colors.white,),
+              child: Icon(
+                Icons.qr_code_outlined,
+                color: Colors.white,
+              ),
               margin: EdgeInsets.only(right: 8),
               height: 60,
               width: 60,
               decoration: BoxDecoration(
-                color: MyColors.cFF4233,
+                  color: MyColors.cFF4233,
                   border: Border.all(color: MyColors.cEBEBEB, width: 1)),
               alignment: Alignment.center,
             ),
@@ -1909,8 +1918,7 @@ class MyViews {
                     ),
                     Text(
                       '¥${double.parse('${data.amount}').toStringAsFixed(2)}',
-                      style:
-                      TextStyle(color: MyColors.cFF4233, fontSize: 12),
+                      style: TextStyle(color: MyColors.cFF4233, fontSize: 12),
                     ),
                   ],
                   crossAxisAlignment: CrossAxisAlignment.start,
@@ -1921,8 +1929,7 @@ class MyViews {
           ],
         ),
       );
-    }
-    else if (data.type == orderTypeOfflineTransfer ||
+    } else if (data.type == orderTypeOfflineTransfer ||
         data.type == orderTypeOfflinePay) {
       //线下付款
       return Container(
@@ -2167,14 +2174,16 @@ class MyViews {
         behavior: HitTestBehavior.translucent,
         child: Container(
           decoration: BoxDecoration(
-            boxShadow: [BoxShadow(
-              color: MyColors.c7FE1E1E1,
-              blurRadius: 5.0,
-            ),],
+            boxShadow: [
+              BoxShadow(
+                color: MyColors.c7FE1E1E1,
+                blurRadius: 5.0,
+              ),
+            ],
             color: Colors.white,
             borderRadius: BorderRadius.circular(4),
           ),
-          margin: EdgeInsets.only(bottom: 6.5,left: 16,right: 16,top: 6.5),
+          margin: EdgeInsets.only(bottom: 6.5, left: 16, right: 16, top: 6.5),
           child: Padding(
             padding: const EdgeInsets.all(10),
             child: Row(
@@ -2190,33 +2199,59 @@ class MyViews {
                     margin: EdgeInsets.only(left: 10),
                     child: Column(
                       children: [
-                        myText('${data.name}(${data.uid})', MyColors.c333333,
-                            14),
+                        myText(
+                            '${data.name}(${data.uid})', MyColors.c333333, 14),
                         Text(
                           '货帮介绍:${data.introduction}',
-                          style: TextStyle(
-                              color: MyColors.c666666, fontSize: 11),
+                          style:
+                              TextStyle(color: MyColors.c666666, fontSize: 11),
                           maxLines: 1,
                           overflow: TextOverflow.ellipsis,
                           softWrap: true,
                         ),
                         Row(
                           children: [
-                            Icon(
-                              Icons.location_on_outlined,
-                              size: 15,
-                              color: MyColors.c666666,
-                            ),
                             Expanded(
-                              child: Text(
-                                '${data.address}',
-                                style: TextStyle(
-                                    color: MyColors.c666666, fontSize: 10),
-                                maxLines: 1,
-                                overflow: TextOverflow.ellipsis,
-                                softWrap: true,
+                              child: GestureDetector(
+                                onTap: () {
+                                  if (data.latitude == 0) {
+                                    showToast('该店坐标有误');
+                                    return;
+                                  }
+                                  mapNavigationPopup(
+                                      data.latitude, data.longitude, context);
+                                },
+                                behavior: HitTestBehavior.translucent,
+                                child: Row(
+                                  children: [
+                                    Icon(
+                                      Icons.location_on_outlined,
+                                      size: 15,
+                                      color: MyColors.c666666,
+                                    ),
+                                    Expanded(
+                                      child: Text(
+                                        '${data.address}',
+                                        style: TextStyle(
+                                            color: MyColors.c666666,
+                                            fontSize: 10),
+                                        maxLines: 1,
+                                        overflow: TextOverflow.ellipsis,
+                                        softWrap: true,
+                                      ),
+                                    ),
+                                  ],
+                                ),
                               ),
                             ),
+                            if (data.longitude != 0 &&
+                                context.watch<MyLocationProvider>().myLatLng !=
+                                    null)
+                              Text(
+                                '${(AMapTools.distanceBetween(LatLng(data.latitude, data.longitude), LatLng(MyCookie().location.latitude, MyCookie().location.longitude)) / 1000).toStringAsFixed(3)}km',
+                                style: TextStyle(
+                                    fontSize: 10, color: MyColors.c666666),
+                              )
                           ],
                         ),
                       ],
@@ -2237,13 +2272,17 @@ class MyViews {
         },
         behavior: HitTestBehavior.translucent,
         child: Container(
-          margin: EdgeInsets.only(bottom: 6.5,left: 16,right: 16,top: 6.5),
-          decoration: BoxDecoration(boxShadow: [BoxShadow(
-            color: MyColors.c7FE1E1E1,
-            blurRadius: 5.0,
-          ),],
+          margin: EdgeInsets.only(bottom: 6.5, left: 16, right: 16, top: 6.5),
+          decoration: BoxDecoration(
+            boxShadow: [
+              BoxShadow(
+                color: MyColors.c7FE1E1E1,
+                blurRadius: 5.0,
+              ),
+            ],
             color: Colors.white,
-            borderRadius: BorderRadius.circular(4),),
+            borderRadius: BorderRadius.circular(4),
+          ),
           child: Padding(
             padding: const EdgeInsets.only(top: 10, bottom: 10, left: 10),
             child: Row(
@@ -2317,6 +2356,145 @@ class MyViews {
       );
     }
   }
+
+  void mapNavigationPopup(
+    double latitude,
+    double longitude,
+    BuildContext context,
+  ) {
+    showModalBottomSheet(
+        isScrollControlled: true,
+        shape: RoundedRectangleBorder(
+          //圆角
+          borderRadius: BorderRadius.vertical(top: Radius.circular(15)),
+        ),
+        builder: (BuildContext context) {
+          return AnimatedPadding(
+            //showModalBottomSheet 键盘弹出时自适应
+            padding: MediaQuery.of(context).viewInsets, //边距(必要)
+            duration: const Duration(milliseconds: 100), //时常 (必要)
+            child: Container(
+              // height: 180,
+              constraints: BoxConstraints(
+                minHeight: 90, //设置最小高度(必要)
+                maxHeight:
+                    MediaQuery.of(context).size.height / 1.5, //设置最大高度(必要)
+              ),
+              padding: EdgeInsets.only(top: 20, bottom: 20),
+              decoration: BoxDecoration(
+                  borderRadius: BorderRadius.vertical(top: Radius.circular(15)),
+                  color: Colors.white), //圆角
+              child: ListView(
+                padding: EdgeInsets.all(0),
+                shrinkWrap: true,
+                children: <Widget>[
+                  Column(
+                    mainAxisSize: MainAxisSize.min,
+                    mainAxisAlignment: MainAxisAlignment.start,
+                    crossAxisAlignment: CrossAxisAlignment.center,
+                    children: <Widget>[
+                      GestureDetector(
+                        onTap: () {
+                          MapUtil.gotoAMap(longitude, latitude);
+                        },
+                        behavior: HitTestBehavior.translucent,
+                        child: Container(
+                          height: 50,
+                          child: Column(
+                            children: [
+                              Text(
+                                '高德地图',
+                                style: TextStyle(
+                                    color: MyColors.c333333, fontSize: 16),
+                              ),
+                              Container(
+                                height: 0.5,
+                                color: Colors.grey[200],
+                              )
+                            ],
+                            mainAxisAlignment: MainAxisAlignment.spaceAround,
+                          ),
+                        ),
+                      ),
+                      GestureDetector(
+                        onTap: () {
+                          MapUtil.gotoBaiduMap(longitude, latitude);
+                        },
+                        behavior: HitTestBehavior.translucent,
+                        child: Container(
+                          height: 50,
+                          child: Column(
+                            children: [
+                              Text(
+                                '百度地图',
+                                style: TextStyle(
+                                    color: MyColors.c333333, fontSize: 16),
+                              ),
+                              Container(
+                                height: 0.5,
+                                color: Colors.grey[200],
+                              )
+                            ],
+                            mainAxisAlignment: MainAxisAlignment.spaceAround,
+                          ),
+                        ),
+                      ),
+                      GestureDetector(
+                        onTap: () {
+                          MapUtil.gotoTencentMap(longitude, latitude);
+                        },
+                        behavior: HitTestBehavior.translucent,
+                        child: Container(
+                          height: 50,
+                          child: Column(
+                            children: [
+                              Text(
+                                '腾讯地图',
+                                style: TextStyle(
+                                    color: MyColors.c333333, fontSize: 16),
+                              ),
+                              Container(
+                                height: 0.5,
+                                color: Colors.grey[200],
+                              )
+                            ],
+                            mainAxisAlignment: MainAxisAlignment.spaceAround,
+                          ),
+                        ),
+                      ),
+                      if (Platform.isIOS)
+                        GestureDetector(
+                          onTap: () {
+                            MapUtil.gotoAppleMap(longitude, latitude);
+                          },
+                          behavior: HitTestBehavior.translucent,
+                          child: Container(
+                            height: 50,
+                            child: Column(
+                              children: [
+                                Text(
+                                  '苹果地图',
+                                  style: TextStyle(
+                                      color: MyColors.c333333, fontSize: 16),
+                                ),
+                                Container(
+                                  height: 0.5,
+                                  color: Colors.grey[200],
+                                )
+                              ],
+                              mainAxisAlignment: MainAxisAlignment.spaceAround,
+                            ),
+                          ),
+                        ),
+                    ],
+                  )
+                ],
+              ),
+            ),
+          );
+        },
+        context: context);
+  }
 }
 
 Widget noData() {

+ 1 - 0
lib/my_tools/order_processing/order_processing.dart

@@ -135,6 +135,7 @@ class OrderProcessing {
           }
         }
         if (hasMatch) {
+          matchTemplate();
           showView();
         }
         if (!hasMatch) {

+ 19 - 0
lib/my_tools/providers.dart

@@ -0,0 +1,19 @@
+import 'package:amap_flutter_base/amap_flutter_base.dart';
+import 'package:flutter/foundation.dart';
+
+class MyLocationProvider with ChangeNotifier, DiagnosticableTreeMixin {
+  LatLng _myLatLng;
+
+  LatLng get myLatLng => _myLatLng;
+
+  void getLocation(double lat,double lng) {
+    _myLatLng = LatLng(lat, lng);
+    notifyListeners();
+  }
+
+  /// Makes `Counter` readable inside the devtools by listing all of its properties
+  @override
+  void debugFillProperties(DiagnosticPropertiesBuilder properties) {
+    super.debugFillProperties(properties);
+  }
+}

+ 3 - 3
lib/paegs/gang_page/create_a_gang_page/create_a_gang_page.dart

@@ -50,7 +50,7 @@ class _CreateAGangPageState extends State<CreateAGangPage> {
   File _image;
   final picker = ImagePicker();
   bool private = false;
-  bool innerTrade = false;
+  bool innerTrade = true;
   bool ownerPayPlatformCommission = true;
   int shopCommissionType = 0; //店主收取佣金方式  直接收取固定金额 = 0 按照比例收取 = 1
   int commissionCommissionType = 0; //店主收取佣金方式  直接收取固定金额 = 0 按照比例收取 = 1
@@ -1393,8 +1393,8 @@ class _CreateAGangPageState extends State<CreateAGangPage> {
         return;
       } else {
         try {
-          if (double.parse(_startingPoint.text.toString()) > 100) {
-            showToast('起收金额不能大于100元');
+          if (double.parse(_startingPoint.text.toString()) > 200) {
+            showToast('起收金额不能大于200元');
             return;
           }
         } catch (e) {

+ 38 - 114
lib/paegs/gang_page/gang_in_page/gang_in_page.dart

@@ -1,7 +1,6 @@
 import 'dart:async';
 import 'dart:convert';
 import 'dart:io';
-import 'dart:math';
 
 import 'package:azlistview/azlistview.dart';
 import 'package:bbyyy/beans/goods_bean_entity.dart';
@@ -412,11 +411,10 @@ class _GangInPageState extends State<GangInPage> {
                                 crossAxisAlignment: CrossAxisAlignment.center,
                               ),
                               GestureDetector(
-                                onTap: (){
-                                  mapNavigationPopup();
+                                onTap: () {
+                                 MyViews().mapNavigationPopup(store.latitude,store.longitude,context);
                                 },
-                                behavior:
-                                HitTestBehavior.translucent,
+                                behavior: HitTestBehavior.translucent,
                                 child: Row(
                                   children: [
                                     SvgPicture.asset(
@@ -430,7 +428,8 @@ class _GangInPageState extends State<GangInPage> {
                                     ),
                                     Expanded(
                                       child: Text(
-                                        store != null && store.address.isNotEmpty
+                                        store != null &&
+                                                store.address.isNotEmpty
                                             ? store.address
                                             : '暂无',
                                         style: TextStyle(
@@ -527,8 +526,8 @@ class _GangInPageState extends State<GangInPage> {
             ),
           ),
           Visibility(
-            visible: widget.data.privateShop ||
-                paymentAuthority(widget.data.role),
+            visible:
+                widget.data.privateShop || paymentAuthority(widget.data.role),
             child: Container(
               height: 40,
               color: Colors.white,
@@ -815,8 +814,8 @@ class _GangInPageState extends State<GangInPage> {
               : ListView.builder(
                   itemBuilder: (c, index) {
                     return Slidable(
-                      child: MyViews().getNoPayGoodsItem(
-                          orders[index], context, widget.data.ownerUid,widget.data.role),
+                      child: MyViews().getNoPayGoodsItem(orders[index], context,
+                          widget.data.ownerUid, widget.data.role),
                       actionPane: SlidableDrawerActionPane(),
                       enabled: paymentAuthority(widget.data.role),
                       actionExtentRatio: 0.25,
@@ -867,8 +866,8 @@ class _GangInPageState extends State<GangInPage> {
               : ListView.builder(
                   itemBuilder: (c, index) {
                     return Slidable(
-                      child: MyViews().getNoPayGoodsItem(
-                          orders[index], context, widget.data.ownerUid,widget.data.role),
+                      child: MyViews().getNoPayGoodsItem(orders[index], context,
+                          widget.data.ownerUid, widget.data.role),
                       actionPane: SlidableDrawerActionPane(),
                       enabled: orders[index].type == orderTypeOfflineTransfer &&
                           orders[index].buyerUid == MyCookie().getUID(),
@@ -923,7 +922,8 @@ class _GangInPageState extends State<GangInPage> {
                     itemBuilder: (c, index) {
                       return GestureDetector(
                         onTap: () {
-                          if (permissionToModifyCustomerName(widget.data.role)) {
+                          if (permissionToModifyCustomerName(
+                              widget.data.role)) {
                             if (MyCookie().getUID() != member[index].userUid) {
                               MyTools().toPage(
                                   context, MemberDetailsPage(member[index]),
@@ -967,7 +967,7 @@ class _GangInPageState extends State<GangInPage> {
                                               shopUserMember,
                                           child: Container(
                                             decoration: BoxDecoration(
-                                                color:  MyColors.cFFCD00,
+                                                color: MyColors.cFFCD00,
                                                 borderRadius:
                                                     BorderRadius.circular(8)),
                                             height: 16,
@@ -1124,11 +1124,31 @@ class _GangInPageState extends State<GangInPage> {
     } else {
       conditions.add('state == $orderStateUnpaid');
       conditions.add('shop_uid == ${widget.data.shopUid}');
+      conditions.add('buyer_uid==0');
       conditions.add('buyer_name LIKE ${MyCookie().getName()}');
     }
+    var filters;
+    if (paymentAuthority(widget.data.role)) {
+      filters = {"conditions": conditions};
+    } else {
+      filters = {
+        "conditions": conditions,
+        "or": true,
+        "filters": [
+          {
+            "conditions": [
+              "state == $orderStateUnpaid",
+              'shop_uid == ${widget.data.shopUid}',
+              'buyer_uid==${MyCookie().getUID()}'
+            ]
+          }
+        ]
+      };
+    }
+
     MyDio().query({
       "key": "order",
-      "filters": {"conditions": conditions},
+      "filters": filters,
       "dims": orderDims,
       "paging": [page, 20],
       "order_by": ["create_time,DESC"]
@@ -1211,8 +1231,8 @@ class _GangInPageState extends State<GangInPage> {
           MyShopBeanDataData chatWith;
 
           // if (helper.length == 0) {
-            chatWith = member[
-                member.indexWhere((element) => element.role == shopUserOwner)];
+          chatWith = member[
+              member.indexWhere((element) => element.role == shopUserOwner)];
           // } else {
           //   chatWith = helper[Random().nextInt(helper.length)];
           // }
@@ -1515,101 +1535,5 @@ class _GangInPageState extends State<GangInPage> {
     }, (error) {});
   }
 
-  void mapNavigationPopup() {
-    showModalBottomSheet(
-        isScrollControlled: true,
-        shape: RoundedRectangleBorder(
-          //圆角
-          borderRadius: BorderRadius.vertical(top: Radius.circular(15)),
-        ),
-        builder: (BuildContext context) {
-          return AnimatedPadding(
-            //showModalBottomSheet 键盘弹出时自适应
-            padding: MediaQuery.of(context).viewInsets, //边距(必要)
-            duration: const Duration(milliseconds: 100), //时常 (必要)
-            child: Container(
-              // height: 180,
-              constraints: BoxConstraints(
-                minHeight: 90, //设置最小高度(必要)
-                maxHeight: MediaQuery.of(context).size.height / 1.5, //设置最大高度(必要)
-              ),
-              padding: EdgeInsets.only(top: 20, bottom: 20),
-              decoration: BoxDecoration(borderRadius: BorderRadius.vertical(top: Radius.circular(15)), color: Colors.white), //圆角
-              child: ListView(
-                padding: EdgeInsets.all(0),
-                shrinkWrap: true,
-                children: <Widget>[
-                  Column(
-                    mainAxisSize: MainAxisSize.min,
-                    mainAxisAlignment: MainAxisAlignment.start,
-                    crossAxisAlignment: CrossAxisAlignment.center,
-                    children: <Widget>[
-                      GestureDetector(
-                        onTap: (){
-                          MapUtil.gotoAMap(store.longitude, store.latitude);
-                        },
-                        behavior: HitTestBehavior.translucent,
-                        child: Container(
-                          height: 50,
-                          child: Column(
-                            children: [
-                              Text('高德地图',style: TextStyle(color: MyColors.c333333,fontSize: 16),),
-                              Container(height: 0.5,color: Colors.grey[200],)
-                            ],mainAxisAlignment: MainAxisAlignment.spaceAround,
-                          ),
-                        ),
-                      ),
-                      GestureDetector(onTap: (){
-                        MapUtil.gotoBaiduMap(store.longitude, store.latitude);
-                      },
-                        behavior: HitTestBehavior.translucent,
-                        child: Container(
-                          height: 50,
-                          child: Column(
-                            children: [
-                              Text('百度地图',style: TextStyle(color: MyColors.c333333,fontSize: 16),),
-                              Container(height: 0.5,color: Colors.grey[200],)
-                            ],mainAxisAlignment: MainAxisAlignment.spaceAround,
-                          ),
-                        ),
-                      ),
-                      GestureDetector(onTap: (){
-                        MapUtil.gotoTencentMap(store.longitude, store.latitude);
-                      },
-                        behavior: HitTestBehavior.translucent,
-                        child: Container(
-                          height: 50,
-                          child: Column(
-                            children: [
-                              Text('腾讯地图',style: TextStyle(color: MyColors.c333333,fontSize: 16),),
-                              Container(height: 0.5,color: Colors.grey[200],)
-                            ],mainAxisAlignment: MainAxisAlignment.spaceAround,
-                          ),
-                        ),
-                      ),
-                      if(Platform.isIOS)
-                      GestureDetector(
-                        onTap: (){
-                          MapUtil.gotoAppleMap(store.longitude, store.latitude);
-                        },
-                        behavior: HitTestBehavior.translucent,
-                        child: Container(
-                          height: 50,
-                          child: Column(
-                            children: [
-                              Text('苹果地图',style: TextStyle(color: MyColors.c333333,fontSize: 16),),
-                              Container(height: 0.5,color: Colors.grey[200],)
-                            ],mainAxisAlignment: MainAxisAlignment.spaceAround,
-                          ),
-                        ),
-                      ),
-                    ],
-                  )
-                ],
-              ),
-            ),
-          );
-        },
-        context: context);
-  }
+
 }

+ 33 - 0
lib/paegs/gang_page/gang_in_page/gang_information_page/gang_information_page.dart

@@ -1182,6 +1182,24 @@ class _GangInformationPageState extends State<GangInformationPage> {
                         ),
                       ),
                     ),
+                    if(widget.data.ownerUid!=MyCookie().getUID())
+                    GestureDetector(
+                      onTap: () {
+                        exitGang();
+                      },
+                      behavior: HitTestBehavior.translucent,
+                      child: Container(
+                        child: Text(
+                          '退出货帮',
+                          style:
+                          TextStyle(color: MyColors.cFF4233, fontSize: 16),
+                        ),
+                        alignment: Alignment.center,
+                        margin: EdgeInsets.only(top: 7),
+                        height: 50,
+                        color: Colors.white,
+                      ),
+                    )
                   ],
                 ),
               ),
@@ -1293,4 +1311,19 @@ class _GangInformationPageState extends State<GangInformationPage> {
       controller.requestRefresh(needMove: false);
     });
   }
+
+  void exitGang() {
+    showSimpleDialog('确认退出该货帮?', context, () {
+      Navigator.pop(context);
+      MyDio().del({
+        'key': 'shop_user',
+        'ids': [widget.data.id]
+      }, (response, hasError) {
+        if (!hasError) {
+          showToast('退出成功');
+          Navigator.pop(context,'删除货帮');
+        }
+      }, (error) {});
+    });
+  }
 }

+ 12 - 0
lib/paegs/home_page/home_page.dart

@@ -708,6 +708,18 @@ class _HomePageState extends State<HomePage>
   }
 
   queryAd() {
+    if (page == 1) {
+      data.clear();
+      puShop.clear();
+    }
+    if (pageIndex == 1) {
+      data.addAll(container);
+    } else {
+      puShop.addAll(container);
+    }
+    setState(() {});
+    endRe(_reController);
+    return;
     int count = 5;
     MyDio().query({
       "key": "ad",

+ 15 - 1
lib/paegs/mine_page/order_page/order_page.dart

@@ -233,11 +233,25 @@ class _OrderPageState extends State<OrderPage> {
       conditions.add('seller_uid == ${MyCookie().getUID()}');
     } else {
       conditions.add("state == $orderStateUnpaid");
+      conditions.add('buyer_uid==0');
       conditions.add('buyer_name LIKE ${MyCookie().getName()}');
     }
+    var filters;
+    if(selectedIndex==2){
+      filters = {"conditions": conditions,"or":true,"filters": [
+        {
+          "conditions": [
+            "state == $orderStateUnpaid",
+            'buyer_uid==${MyCookie().getUID()}'
+          ]
+        }
+      ]};
+    }else{
+      filters = {"conditions": conditions};
+    }
     MyDio().query({
       "key": "order",
-      "filters": {"conditions": conditions},
+      "filters": filters,
       "dims": orderDims,
       "paging": [page, 20],
       "order_by": ["create_time,DESC"]

+ 1 - 1
lib/paegs/root_page/root_page.dart

@@ -43,7 +43,7 @@ class _RootPageState extends State<RootPage> {
   void initState() {
     super.initState();
     MyCookie().initP();
-    LocationUtil().initLocation();
+    LocationUtil().initLocation(context);
     LocationUtil().getLocation();
     Nsq.ConnectServer(
       Nsq.handlerMessage, // 接收消息处理逻辑

+ 17 - 3
pubspec.lock

@@ -42,7 +42,7 @@ packages:
       name: async
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "2.5.0"
+    version: "2.6.1"
   audioplayers:
     dependency: "direct main"
     description:
@@ -469,6 +469,13 @@ packages:
       url: "https://pub.flutter-io.cn"
     source: hosted
     version: "1.0.0"
+  nested:
+    dependency: transitive
+    description:
+      name: nested
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "1.0.0"
   octo_image:
     dependency: transitive
     description:
@@ -630,6 +637,13 @@ packages:
       url: "https://pub.flutter-io.cn"
     source: hosted
     version: "4.2.1"
+  provider:
+    dependency: "direct main"
+    description:
+      name: provider
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "5.0.0"
   pull_to_refresh:
     dependency: "direct main"
     description:
@@ -753,7 +767,7 @@ packages:
       name: source_span
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "1.8.0"
+    version: "1.8.1"
   sp_util:
     dependency: transitive
     description:
@@ -823,7 +837,7 @@ packages:
       name: test_api
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "0.2.19"
+    version: "0.3.0"
   timezone:
     dependency: transitive
     description:

+ 2 - 1
pubspec.yaml

@@ -15,7 +15,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
 # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
 # Read more about iOS versioning at
 # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
-version: 1.1.12+1
+version: 1.1.13+1
 
 environment:
   sdk: ">=2.7.0 <3.0.0"
@@ -71,6 +71,7 @@ dependencies:
   amap_flutter_map: ^2.0.1
   amap_flutter_base: ^2.0.0
   amap_flutter_location: ^2.0.0
+  provider: ^5.0.0
 
 dev_dependencies:
   flutter_test: