Просмотр исходного кода

Merge branch 'v1.1.0' into v1.1.0-iOS

“HeShaoZe” 6 месяцев назад
Родитель
Сommit
7eda2bf609

Разница между файлами не показана из-за своего большого размера
+ 841 - 561
lib/data/api/atmob_api.g.dart


+ 3 - 1
lib/dialog/account_replace_dialog.dart

@@ -6,10 +6,12 @@ import 'package:get/get.dart';
 import 'package:get/get_core/src/get_main.dart';
 import 'package:location/module/main/main_page.dart';
 import 'package:location/resource/string.gen.dart';
+import 'package:location/router/app_pages.dart';
 import 'package:location/utils/common_expand.dart';
 
 import '../resource/assets.gen.dart';
 import '../resource/colors.gen.dart';
+import '../utils/common_util.dart';
 
 class AccountReplaceDialog {
   static const String _tag = 'AccountReplaceDialog';
@@ -105,7 +107,7 @@ class _AccountReplaceView extends StatelessWidget {
 
   void onKnowClick() {
     //清空至首页
-    Get.offAll(() => MainPage());
+    backToSpecificPage(RoutePath.mainTab);
     AccountReplaceDialog.dismiss();
   }
 }

+ 1 - 1
lib/module/login/login_controller.dart

@@ -134,7 +134,7 @@ class LoginController extends BaseController {
     }
     isRequestLogin = true;
     accountRepository.loginUserLogin(phone, code).then((data) {
-      Get.back();
+      Get.back(result: true);
       ToastUtil.show(StringName.loginSuccess);
     }).catchError((error) {
       isRequestLogin = false;

+ 2 - 2
lib/module/login/login_page.dart

@@ -18,8 +18,8 @@ import 'login_controller.dart';
 class LoginPage extends BasePage<LoginController> {
   const LoginPage({super.key});
 
-  static void start() {
-    Get.toNamed(RoutePath.login);
+  static Future<bool> start() async {
+    return await Get.toNamed(RoutePath.login) == true;
   }
 
   @override

+ 10 - 8
lib/module/main/main_controller.dart

@@ -94,6 +94,8 @@ class MainController extends BaseController {
 
   Timer? electricTimer;
 
+  double? lastVisibleFraction;
+
   final Debounce _queryTodayTrackDebounce = Debounce(debounceTime: 500);
 
   final Map<String, int> electricMap = {};
@@ -183,11 +185,7 @@ class MainController extends BaseController {
     if (selectedFriend != null) {
       UserInfo? userInfo = integrateList
           .firstWhereOrNull((element) => element.id == selectedFriend?.id);
-      if (userInfo == null) {
-        _selectedFriend.value = null;
-      } else {
-        _setSelectUserInfo(userInfo);
-      }
+      _setSelectUserInfo(userInfo ?? mineUserInfo);
     }
     _autoSelectFriend();
   }
@@ -254,6 +252,7 @@ class MainController extends BaseController {
     //修改地图选中
     int? electric = electricMap[userInfo.id];
     _updateMapSelected(oldInfo, userInfo, electric: electric);
+    onFriendVisibleFraction(lastVisibleFraction ?? 0.0);
     if (!accountRepository.memberIsExpired() || userInfo.isMine == true) {
       //移动到选中的位置
       animateCameraToUser(userInfo);
@@ -438,10 +437,12 @@ class MainController extends BaseController {
     NewsPage.start();
   }
 
-  onUrgentContactClick() {
+  onUrgentContactClick() async {
     if (!accountRepository.isLogin.value) {
-      LoginPage.start();
-      return;
+      bool isLogin = await LoginPage.start();
+      if (!isLogin) {
+        return;
+      }
     }
     //如果没有紧急联系人,则先进入页面
     if (urgentContactRepository.contactList.isEmpty) {
@@ -532,6 +533,7 @@ class MainController extends BaseController {
   }
 
   void onFriendVisibleFraction(double visibleFraction) {
+    lastVisibleFraction = visibleFraction;
     if (visibleFraction > 0.2) {
       _queryTodayTrackDebounce.onClick(() {
         _requestSelectedFriendTrack();

+ 13 - 1
lib/module/main/main_page.dart

@@ -217,7 +217,19 @@ class MainPage extends BasePage<MainController> {
           margin: EdgeInsets.only(bottom: 3.w, top: 3.w),
           child: AspectRatio(
             aspectRatio: 1,
-            child: buildTodayMapView(todayTrackReportBean),
+            child: Stack(
+              children: [
+                buildTodayMapView(todayTrackReportBean),
+                GestureDetector(
+                  behavior: HitTestBehavior.opaque,
+                  onTap: controller.onTodayTraceClick,
+                  child: SizedBox(
+                    width: double.infinity,
+                    height: double.infinity,
+                  ),
+                )
+              ],
+            ),
           ),
         ),
         SizedBox(width: 10.w),

+ 1 - 3
lib/module/main/today_track_helper.dart

@@ -2,11 +2,9 @@ import 'package:flutter_map/flutter_map.dart';
 import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:get/get_rx/src/rx_types/rx_types.dart';
 import 'package:injectable/injectable.dart';
-import 'package:location/data/consts/error_code.dart';
 import 'package:location/data/repositories/track_repository.dart';
 import 'package:location/di/get_it.dart';
 import 'package:location/handler/error_handler.dart';
-import 'package:location/utils/http_handler.dart';
 import '../../data/bean/atmob_track_point.dart';
 import '../../data/bean/track_daily_bean.dart';
 
@@ -78,7 +76,7 @@ class TodayTrackHelper {
       bean.markers = list;
 
       final points = response.trackPoints?.map((point) {
-        return LatLng(latitude: point.latitude, longitude: point.latitude);
+        return LatLng(latitude: point.latitude, longitude: point.longitude);
       }).toList();
 
       bean.polylines = [

+ 9 - 5
lib/module/track/track_controller.dart

@@ -14,6 +14,7 @@ import 'package:location/handler/error_handler.dart';
 import 'package:location/resource/string.gen.dart';
 import 'package:permission_handler/permission_handler.dart';
 import 'package:sliding_sheet2/sliding_sheet2.dart';
+import '../../data/bean/track_daily_bean.dart';
 import '../../data/bean/user_info.dart';
 import '../../dialog/common_confirm_dialog_impl.dart';
 import '../../dialog/location_permission_dialog.dart';
@@ -52,6 +53,8 @@ class TrackController extends BaseController
 
   final RxDouble trackBottomHeight = RxDouble(330.w);
 
+  TrackDailyBean? selectedTrackDailyBean;
+
   final TrackRepository trackRepository;
   final FriendsRepository friendsRepository;
   final AccountRepository accountRepository;
@@ -94,6 +97,7 @@ class TrackController extends BaseController
       if (tab.indexIsChanging == false) {
         //控制请求当前页数据或者数据已有时跟换数据
         mapController.clear();
+        selectedTrackDailyBean = null;
         currentTrackDay.value = daysList[tab.index];
       }
     });
@@ -118,7 +122,7 @@ class TrackController extends BaseController
   }
 
   void showSelectMarker(List<LatLng> points, Marker selectMarker) {
-    _clearSelectMapMarker();
+    clearSelectMapMarker();
     mapController.updateOrAddMarker(selectMarker);
     mapController.moveToSuitableLocation(points, mapPadding: selectPadding);
   }
@@ -128,7 +132,7 @@ class TrackController extends BaseController
   }
 
   void showMovingTrack(List<LatLng> movingPoints) {
-    _clearSelectMapMarker();
+    clearSelectMapMarker();
     mapController.addPolyline(
         Polyline(
             lineId: Constants.traceSelectLineId,
@@ -138,7 +142,7 @@ class TrackController extends BaseController
   }
 
   void showTrackError(List<LatLng> errorPoints, Marker errorMarker) {
-    _clearSelectMapMarker();
+    clearSelectMapMarker();
     mapController.updateOrAddMarker(errorMarker);
     mapController.addPolyline(
         Polyline(
@@ -148,7 +152,7 @@ class TrackController extends BaseController
         mapPadding: mapPadding);
   }
 
-  void _clearSelectMapMarker() {
+  void clearSelectMapMarker() {
     mapController.removeMarker(Constants.mineLocationId);
     mapController.removePolyline(Constants.traceSelectLineId);
     mapController.removeMarker(Constants.tracePopupId);
@@ -192,7 +196,7 @@ class TrackController extends BaseController
   }
 
   void showMineLocationMarker(MapLocation location) {
-    _clearSelectMapMarker();
+    clearSelectMapMarker();
     Marker mineMarker = Marker(
         id: Constants.mineLocationId,
         latitude: location.latitude,

+ 2 - 0
lib/module/track/track_day_detail/track_daily_item.dart

@@ -1,6 +1,7 @@
 import 'package:flutter/cupertino.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_screenutil/flutter_screenutil.dart';
+import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
 import 'package:location/data/bean/track_daily_bean.dart';
 import 'package:location/data/consts/constants.dart';
 import 'package:location/dialog/track_error_tips_dialog.dart';
@@ -344,6 +345,7 @@ Widget _buildLockDesc(int? highUnlock, int? totalUnlock) {
       behavior: HitTestBehavior.opaque,
       onTap: () {
         ToastUtil.show("",
+            displayType: SmartToastType.onlyRefresh,
             displayTime: Duration(seconds: 3),
             alignment: Alignment.center,
             builder: (cxt) => _buildDoubtView());

+ 38 - 30
lib/module/track/track_day_detail/track_day_detail_controller.dart

@@ -413,37 +413,45 @@ class TrackDayDetailController extends BaseController {
   }
 
   void onHistoryTrackItemClick(TrackDailyBean bean) {
-    if (bean.status == TrackStatus.stay) {
-      //停留状态
-      Marker selectMarker = Marker(
-        id: Constants.tracePopupId,
-        markerName: '',
-        latitude: bean.lat,
-        longitude: bean.lng,
-        markerType: MarkerType.tracePopupPoint,
-        tags: Popup(
-          title: bean.addr ?? '',
-          desc: TrackUtil.formatDurationFromMillis(bean.duration),
-        ),
-      );
-      trackController.showSelectMarker(points, selectMarker);
-    } else if (bean.status == TrackStatus.moving) {
-      final movingPoints =
-          TrackUtil.getTrackMovePoints(trackOriginPoints, bean.start, bean.end);
-      trackController.showMovingTrack(movingPoints);
-    } else if (bean.status == TrackStatus.error) {
-      final errorPoints =
-          TrackUtil.getTrackMovePoints(trackOriginPoints, bean.start, bean.end);
-      if (errorPoints.isEmpty) {
-        return;
-      }
-      Marker errorMarker = Marker(
-          id: Constants.traceErrorId,
+    if (trackController.selectedTrackDailyBean == null ||
+        trackController.selectedTrackDailyBean != bean) {
+      if (bean.status == TrackStatus.stay) {
+        //停留状态
+        Marker selectMarker = Marker(
+          id: Constants.tracePopupId,
           markerName: '',
-          latitude: errorPoints.first.latitude,
-          longitude: errorPoints.first.longitude,
-          markerType: MarkerType.trackErrorPoint);
-      trackController.showTrackError(errorPoints, errorMarker);
+          latitude: bean.lat,
+          longitude: bean.lng,
+          markerType: MarkerType.tracePopupPoint,
+          tags: Popup(
+            title: bean.addr ?? '',
+            desc: TrackUtil.formatDurationFromMillis(bean.duration),
+          ),
+        );
+        trackController.showSelectMarker(points, selectMarker);
+      } else if (bean.status == TrackStatus.moving) {
+        final movingPoints = TrackUtil.getTrackMovePoints(
+            trackOriginPoints, bean.start, bean.end);
+        trackController.showMovingTrack(movingPoints);
+      } else if (bean.status == TrackStatus.error) {
+        final errorPoints = TrackUtil.getTrackMovePoints(
+            trackOriginPoints, bean.start, bean.end);
+        if (errorPoints.isEmpty) {
+          return;
+        }
+        Marker errorMarker = Marker(
+            id: Constants.traceErrorId,
+            markerName: '',
+            latitude: errorPoints.first.latitude,
+            longitude: errorPoints.first.longitude,
+            markerType: MarkerType.trackErrorPoint);
+        trackController.showTrackError(errorPoints, errorMarker);
+      }
+      trackController.selectedTrackDailyBean = bean;
+    } else {
+      //如果当前已经有选中的轨迹,则清除选中状态
+      trackController.clearSelectMapMarker();
+      trackController.selectedTrackDailyBean = null;
     }
   }
 

+ 37 - 31
lib/module/track/track_day_detail/track_day_detail_view.dart

@@ -13,9 +13,7 @@ import 'package:location/module/track/track_status.dart';
 import 'package:location/resource/assets.gen.dart';
 import 'package:location/resource/colors.gen.dart';
 import 'package:location/resource/string.gen.dart';
-import 'package:location/utils/atmob_log.dart';
 import 'package:location/utils/common_expand.dart';
-import 'package:location/utils/toast_util.dart';
 import 'package:location/widget/rich_text_replace.dart';
 import 'package:visibility_detector/visibility_detector.dart';
 import '../../../data/bean/track_summary.dart';
@@ -145,36 +143,44 @@ class TrackDayDetailView extends BaseView<TrackDayDetailController> {
                   color: '#333333'.color,
                   fontWeight: FontWeight.bold)),
           SizedBox(height: 8.w),
-          DropCapText(
-            style: TextStyle(fontSize: 11.sp, color: '#666666'.color),
-            trackSituation,
-            dropCapPosition: DropCapPosition.bottomRight,
-            textAlign: TextAlign.justify,
-            dropCap: DropCap(
-                width: 75.w,
-                height: 36.w,
-                child: Align(
-                  alignment: Alignment.bottomRight,
-                  child: GestureDetector(
-                    onTap: controller.onPhoneCallClick,
-                    child: Column(
-                      crossAxisAlignment: CrossAxisAlignment.center,
-                      mainAxisAlignment: MainAxisAlignment.end,
-                      children: [
-                        Assets.images.iconCallPhone
-                            .image(width: 15.w, height: 15.w),
-                        Text(
-                          StringName.trackDailyCallPhone,
-                          style: TextStyle(
-                              fontSize: 10.sp,
-                              color: ColorName.colorPrimary,
-                              fontWeight: FontWeight.bold),
-                        )
-                      ],
+          Obx(() {
+            if (controller.trackController.userInfo?.isMine == true) {
+              return Text(
+                trackSituation,
+                style: TextStyle(fontSize: 11.sp, color: '#666666'.color),
+              );
+            }
+            return DropCapText(
+              style: TextStyle(fontSize: 11.sp, color: '#666666'.color),
+              trackSituation,
+              dropCapPosition: DropCapPosition.bottomRight,
+              textAlign: TextAlign.justify,
+              dropCap: DropCap(
+                  width: 75.w,
+                  height: 36.w,
+                  child: Align(
+                    alignment: Alignment.bottomRight,
+                    child: GestureDetector(
+                      onTap: controller.onPhoneCallClick,
+                      child: Column(
+                        crossAxisAlignment: CrossAxisAlignment.center,
+                        mainAxisAlignment: MainAxisAlignment.end,
+                        children: [
+                          Assets.images.iconCallPhone
+                              .image(width: 15.w, height: 15.w),
+                          Text(
+                            StringName.trackDailyCallPhone,
+                            style: TextStyle(
+                                fontSize: 10.sp,
+                                color: ColorName.colorPrimary,
+                                fontWeight: FontWeight.bold),
+                          )
+                        ],
+                      ),
                     ),
-                  ),
-                )),
-          ),
+                  )),
+            );
+          }),
           SizedBox(height: 12.w),
         ],
       ),

+ 189 - 197
lib/resource/assets.gen.dart

@@ -35,8 +35,7 @@ class $AssetsImagesGen {
 
   /// File path: assets/images/bg_dialog_location_permission_ios.webp
   AssetGenImage get bgDialogLocationPermissionIos => const AssetGenImage(
-    'assets/images/bg_dialog_location_permission_ios.webp',
-  );
+      'assets/images/bg_dialog_location_permission_ios.webp');
 
   /// File path: assets/images/bg_dialog_track_error.webp
   AssetGenImage get bgDialogTrackError =>
@@ -272,8 +271,7 @@ class $AssetsImagesGen {
 
   /// File path: assets/images/icon_main_refresh_friend_location.webp
   AssetGenImage get iconMainRefreshFriendLocation => const AssetGenImage(
-    'assets/images/icon_main_refresh_friend_location.webp',
-  );
+      'assets/images/icon_main_refresh_friend_location.webp');
 
   /// File path: assets/images/icon_main_refresh_mine_location.webp
   AssetGenImage get iconMainRefreshMineLocation =>
@@ -289,8 +287,7 @@ class $AssetsImagesGen {
 
   /// File path: assets/images/icon_member_comment_very_satisfied.webp
   AssetGenImage get iconMemberCommentVerySatisfied => const AssetGenImage(
-    'assets/images/icon_member_comment_very_satisfied.webp',
-  );
+      'assets/images/icon_member_comment_very_satisfied.webp');
 
   /// File path: assets/images/icon_member_contact_click_help.webp
   AssetGenImage get iconMemberContactClickHelp =>
@@ -298,8 +295,7 @@ class $AssetsImagesGen {
 
   /// File path: assets/images/icon_member_contact_click_help_close.webp
   AssetGenImage get iconMemberContactClickHelpClose => const AssetGenImage(
-    'assets/images/icon_member_contact_click_help_close.webp',
-  );
+      'assets/images/icon_member_contact_click_help_close.webp');
 
   /// File path: assets/images/icon_member_fun5.webp
   AssetGenImage get iconMemberFun5 =>
@@ -327,13 +323,11 @@ class $AssetsImagesGen {
 
   /// File path: assets/images/icon_member_ordinary_product_normal.webp
   AssetGenImage get iconMemberOrdinaryProductNormal => const AssetGenImage(
-    'assets/images/icon_member_ordinary_product_normal.webp',
-  );
+      'assets/images/icon_member_ordinary_product_normal.webp');
 
   /// File path: assets/images/icon_member_ordinary_product_select.webp
   AssetGenImage get iconMemberOrdinaryProductSelect => const AssetGenImage(
-    'assets/images/icon_member_ordinary_product_select.webp',
-  );
+      'assets/images/icon_member_ordinary_product_select.webp');
 
   /// File path: assets/images/icon_member_payment_completed.webp
   AssetGenImage get iconMemberPaymentCompleted =>
@@ -353,13 +347,11 @@ class $AssetsImagesGen {
 
   /// File path: assets/images/icon_member_special_products_normal.webp
   AssetGenImage get iconMemberSpecialProductsNormal => const AssetGenImage(
-    'assets/images/icon_member_special_products_normal.webp',
-  );
+      'assets/images/icon_member_special_products_normal.webp');
 
   /// File path: assets/images/icon_member_special_products_select.webp
   AssetGenImage get iconMemberSpecialProductsSelect => const AssetGenImage(
-    'assets/images/icon_member_special_products_select.webp',
-  );
+      'assets/images/icon_member_special_products_select.webp');
 
   /// File path: assets/images/icon_member_vip_back.webp
   AssetGenImage get iconMemberVipBack =>
@@ -411,8 +403,7 @@ class $AssetsImagesGen {
 
   /// File path: assets/images/icon_mine_fun_permission_setting.webp
   AssetGenImage get iconMineFunPermissionSetting => const AssetGenImage(
-    'assets/images/icon_mine_fun_permission_setting.webp',
-  );
+      'assets/images/icon_mine_fun_permission_setting.webp');
 
   /// File path: assets/images/icon_mine_fun_share.webp
   AssetGenImage get iconMineFunShare =>
@@ -440,23 +431,19 @@ class $AssetsImagesGen {
 
   /// File path: assets/images/icon_mine_trial_expiration_header.webp
   AssetGenImage get iconMineTrialExpirationHeader => const AssetGenImage(
-    'assets/images/icon_mine_trial_expiration_header.webp',
-  );
+      'assets/images/icon_mine_trial_expiration_header.webp');
 
   /// File path: assets/images/icon_mine_trial_expiration_pause_bg.webp
   AssetGenImage get iconMineTrialExpirationPauseBg => const AssetGenImage(
-    'assets/images/icon_mine_trial_expiration_pause_bg.webp',
-  );
+      'assets/images/icon_mine_trial_expiration_pause_bg.webp');
 
   /// File path: assets/images/icon_mine_trial_expiration_question.webp
   AssetGenImage get iconMineTrialExpirationQuestion => const AssetGenImage(
-    'assets/images/icon_mine_trial_expiration_question.webp',
-  );
+      'assets/images/icon_mine_trial_expiration_question.webp');
 
   /// File path: assets/images/icon_mine_trial_expiration_recommend.webp
   AssetGenImage get iconMineTrialExpirationRecommend => const AssetGenImage(
-    'assets/images/icon_mine_trial_expiration_recommend.webp',
-  );
+      'assets/images/icon_mine_trial_expiration_recommend.webp');
 
   /// File path: assets/images/icon_mine_trial_expiration_up.webp
   AssetGenImage get iconMineTrialExpirationUp =>
@@ -528,8 +515,7 @@ class $AssetsImagesGen {
 
   /// File path: assets/images/icon_track_detail_time_base_arrow.webp
   AssetGenImage get iconTrackDetailTimeBaseArrow => const AssetGenImage(
-    'assets/images/icon_track_detail_time_base_arrow.webp',
-  );
+      'assets/images/icon_track_detail_time_base_arrow.webp');
 
   /// File path: assets/images/icon_track_error.webp
   AssetGenImage get iconTrackError =>
@@ -609,23 +595,19 @@ class $AssetsImagesGen {
 
   /// File path: assets/images/img_dialog_location_always_tip_1.webp
   AssetGenImage get imgDialogLocationAlwaysTip1 => const AssetGenImage(
-    'assets/images/img_dialog_location_always_tip_1.webp',
-  );
+      'assets/images/img_dialog_location_always_tip_1.webp');
 
   /// File path: assets/images/img_dialog_location_always_tip_2.webp
   AssetGenImage get imgDialogLocationAlwaysTip2 => const AssetGenImage(
-    'assets/images/img_dialog_location_always_tip_2.webp',
-  );
+      'assets/images/img_dialog_location_always_tip_2.webp');
 
   /// File path: assets/images/img_dialog_location_always_tip_3.webp
   AssetGenImage get imgDialogLocationAlwaysTip3 => const AssetGenImage(
-    'assets/images/img_dialog_location_always_tip_3.webp',
-  );
+      'assets/images/img_dialog_location_always_tip_3.webp');
 
   /// File path: assets/images/img_member_first_week_discount_container.webp
   AssetGenImage get imgMemberFirstWeekDiscountContainer => const AssetGenImage(
-    'assets/images/img_member_first_week_discount_container.webp',
-  );
+      'assets/images/img_member_first_week_discount_container.webp');
 
   /// File path: assets/images/img_member_header_ad_1.webp
   AssetGenImage get imgMemberHeaderAd1 =>
@@ -649,8 +631,7 @@ class $AssetsImagesGen {
 
   /// File path: assets/images/img_member_user_cancels_container.webp
   AssetGenImage get imgMemberUserCancelsContainer => const AssetGenImage(
-    'assets/images/img_member_user_cancels_container.webp',
-  );
+      'assets/images/img_member_user_cancels_container.webp');
 
   /// File path: assets/images/img_track_ai_analyse.webp
   AssetGenImage get imgTrackAiAnalyse =>
@@ -666,162 +647,162 @@ class $AssetsImagesGen {
 
   /// List of all assets
   List<AssetGenImage> get values => [
-    bgAddFriendDialog,
-    bgCheckLocationPermission,
-    bgDialogLocationPermissionIos,
-    bgDialogTrackError,
-    bgFriendItem,
-    bgLocationAnalyse,
-    bgLocationAnalyseAi,
-    bgLoginHeadContainer,
-    bgMemberHeader,
-    bgMineMemberCard,
-    bgPageBackground,
-    bgTrackLocationTie,
-    bgTrackPieChat,
-    bgUrgentContactAdd,
-    bgUrgentContactEmpty,
-    bgUrgentContactLogo,
-    bgUrgentContactPopup,
-    iconAccountReplaceLogo,
-    iconAddFriendBackGround,
-    iconAgreementClose,
-    iconAlipayPayment,
-    iconAlipayScanPayment,
-    iconAppleRecoverSubscribe,
-    iconAvatarClose,
-    iconAvatarSelected,
-    iconBlackBack,
-    iconCallPhone,
-    iconCbSelected,
-    iconCbUnSelect,
-    iconCheckboxSelected,
-    iconCheckboxUnSelect,
-    iconDefaultFriendAvatar,
-    iconDefaultMineAvatar,
-    iconDialogAddFriend,
-    iconDialogClose,
-    iconDialogClose2,
-    iconDialogNetError,
-    iconEvaluate1,
-    iconEvaluate2,
-    iconEvaluate3,
-    iconEvaluate4,
-    iconEvaluate5,
-    iconExperiment,
-    iconFriendEdit,
-    iconFriendEditArrow,
-    iconFriendNews,
-    iconFriendSettingCopy,
-    iconGuard,
-    iconLoginAddressBook,
-    iconLoginClose,
-    iconLoginGoWxArrow,
-    iconLoginPhone,
-    iconLoginWx,
-    iconLogo,
-    iconLogoMax,
-    iconMainAddFriend,
-    iconMainFriendGuard,
-    iconMainHelp,
-    iconMainMapClock,
-    iconMainMine,
-    iconMainNews,
-    iconMainRefreshFriendLocation,
-    iconMainRefreshMineLocation,
-    iconMainTrackArrow,
-    iconMemberAvatar,
-    iconMemberCommentVerySatisfied,
-    iconMemberContactClickHelp,
-    iconMemberContactClickHelpClose,
-    iconMemberFun5,
-    iconMemberFun1,
-    iconMemberFun2,
-    iconMemberFun3,
-    iconMemberFun4,
-    iconMemberFun6,
-    iconMemberOrdinaryProductNormal,
-    iconMemberOrdinaryProductSelect,
-    iconMemberPaymentCompleted,
-    iconMemberRetainClose,
-    iconMemberSettlementBg,
-    iconMemberSettlementConfirm,
-    iconMemberSpecialProductsNormal,
-    iconMemberSpecialProductsSelect,
-    iconMemberVipBack,
-    iconMemberVipMiddleBg,
-    iconMemberVipMore,
-    iconMemberVipReceiveArrow,
-    iconMemberVipSign,
-    iconMessageFriendHelp,
-    iconMineFunAbout,
-    iconMineFunAccountFeedback,
-    iconMineFunArrow,
-    iconMineFunCustomerService,
-    iconMineFunExitAccount,
-    iconMineFunLogoutAccount,
-    iconMineFunPermissionSetting,
-    iconMineFunShare,
-    iconMineLogged,
-    iconMineNoLogin,
-    iconMineSmallVip,
-    iconMineTrialExpirationBg,
-    iconMineTrialExpirationHave,
-    iconMineTrialExpirationHeader,
-    iconMineTrialExpirationPauseBg,
-    iconMineTrialExpirationQuestion,
-    iconMineTrialExpirationRecommend,
-    iconMineTrialExpirationUp,
-    iconMineTrialExpirationVip,
-    iconMineUnlockVip,
-    iconMineUrgentContact,
-    iconNetMobile,
-    iconNetWifi,
-    iconNews,
-    iconNewsItem,
-    iconNewsReport,
-    iconNewsReportAgree,
-    iconSplashTitle,
-    iconTrackAiInterpretation,
-    iconTrackAnalyseRefresh,
-    iconTrackDailyDoubt,
-    iconTrackDailyReport,
-    iconTrackDailySummary,
-    iconTrackDailySummaryArrow,
-    iconTrackDetailTimeBaseArrow,
-    iconTrackError,
-    iconTrackLocation,
-    iconTrackLocationNow,
-    iconTrackMoving,
-    iconTrackSearch,
-    iconTrackSearchClear,
-    iconTrackSelectTimeArrow,
-    iconTrackStay,
-    iconTrackUnlock,
-    iconTrackUnlockNoPermission,
-    iconUrgentAdd,
-    iconUrgentContactAdd,
-    iconUrgentContactDialPhone,
-    iconUrgentContactMore,
-    iconUrgentContactTipBg,
-    iconVip,
-    iconWechatPayment,
-    iconWechatScanPayment,
-    iconWhiteBack,
-    imgDialogLocationAlwaysTip1,
-    imgDialogLocationAlwaysTip2,
-    imgDialogLocationAlwaysTip3,
-    imgMemberFirstWeekDiscountContainer,
-    imgMemberHeaderAd1,
-    imgMemberHeaderAd2,
-    imgMemberHeaderAd3,
-    imgMemberHeaderAd4,
-    imgMemberRetainContainer,
-    imgMemberUserCancelsContainer,
-    imgTrackAiAnalyse,
-    imgTrackNoData,
-    imgTrackNoMemberTips,
-  ];
+        bgAddFriendDialog,
+        bgCheckLocationPermission,
+        bgDialogLocationPermissionIos,
+        bgDialogTrackError,
+        bgFriendItem,
+        bgLocationAnalyse,
+        bgLocationAnalyseAi,
+        bgLoginHeadContainer,
+        bgMemberHeader,
+        bgMineMemberCard,
+        bgPageBackground,
+        bgTrackLocationTie,
+        bgTrackPieChat,
+        bgUrgentContactAdd,
+        bgUrgentContactEmpty,
+        bgUrgentContactLogo,
+        bgUrgentContactPopup,
+        iconAccountReplaceLogo,
+        iconAddFriendBackGround,
+        iconAgreementClose,
+        iconAlipayPayment,
+        iconAlipayScanPayment,
+        iconAppleRecoverSubscribe,
+        iconAvatarClose,
+        iconAvatarSelected,
+        iconBlackBack,
+        iconCallPhone,
+        iconCbSelected,
+        iconCbUnSelect,
+        iconCheckboxSelected,
+        iconCheckboxUnSelect,
+        iconDefaultFriendAvatar,
+        iconDefaultMineAvatar,
+        iconDialogAddFriend,
+        iconDialogClose,
+        iconDialogClose2,
+        iconDialogNetError,
+        iconEvaluate1,
+        iconEvaluate2,
+        iconEvaluate3,
+        iconEvaluate4,
+        iconEvaluate5,
+        iconExperiment,
+        iconFriendEdit,
+        iconFriendEditArrow,
+        iconFriendNews,
+        iconFriendSettingCopy,
+        iconGuard,
+        iconLoginAddressBook,
+        iconLoginClose,
+        iconLoginGoWxArrow,
+        iconLoginPhone,
+        iconLoginWx,
+        iconLogo,
+        iconLogoMax,
+        iconMainAddFriend,
+        iconMainFriendGuard,
+        iconMainHelp,
+        iconMainMapClock,
+        iconMainMine,
+        iconMainNews,
+        iconMainRefreshFriendLocation,
+        iconMainRefreshMineLocation,
+        iconMainTrackArrow,
+        iconMemberAvatar,
+        iconMemberCommentVerySatisfied,
+        iconMemberContactClickHelp,
+        iconMemberContactClickHelpClose,
+        iconMemberFun5,
+        iconMemberFun1,
+        iconMemberFun2,
+        iconMemberFun3,
+        iconMemberFun4,
+        iconMemberFun6,
+        iconMemberOrdinaryProductNormal,
+        iconMemberOrdinaryProductSelect,
+        iconMemberPaymentCompleted,
+        iconMemberRetainClose,
+        iconMemberSettlementBg,
+        iconMemberSettlementConfirm,
+        iconMemberSpecialProductsNormal,
+        iconMemberSpecialProductsSelect,
+        iconMemberVipBack,
+        iconMemberVipMiddleBg,
+        iconMemberVipMore,
+        iconMemberVipReceiveArrow,
+        iconMemberVipSign,
+        iconMessageFriendHelp,
+        iconMineFunAbout,
+        iconMineFunAccountFeedback,
+        iconMineFunArrow,
+        iconMineFunCustomerService,
+        iconMineFunExitAccount,
+        iconMineFunLogoutAccount,
+        iconMineFunPermissionSetting,
+        iconMineFunShare,
+        iconMineLogged,
+        iconMineNoLogin,
+        iconMineSmallVip,
+        iconMineTrialExpirationBg,
+        iconMineTrialExpirationHave,
+        iconMineTrialExpirationHeader,
+        iconMineTrialExpirationPauseBg,
+        iconMineTrialExpirationQuestion,
+        iconMineTrialExpirationRecommend,
+        iconMineTrialExpirationUp,
+        iconMineTrialExpirationVip,
+        iconMineUnlockVip,
+        iconMineUrgentContact,
+        iconNetMobile,
+        iconNetWifi,
+        iconNews,
+        iconNewsItem,
+        iconNewsReport,
+        iconNewsReportAgree,
+        iconSplashTitle,
+        iconTrackAiInterpretation,
+        iconTrackAnalyseRefresh,
+        iconTrackDailyDoubt,
+        iconTrackDailyReport,
+        iconTrackDailySummary,
+        iconTrackDailySummaryArrow,
+        iconTrackDetailTimeBaseArrow,
+        iconTrackError,
+        iconTrackLocation,
+        iconTrackLocationNow,
+        iconTrackMoving,
+        iconTrackSearch,
+        iconTrackSearchClear,
+        iconTrackSelectTimeArrow,
+        iconTrackStay,
+        iconTrackUnlock,
+        iconTrackUnlockNoPermission,
+        iconUrgentAdd,
+        iconUrgentContactAdd,
+        iconUrgentContactDialPhone,
+        iconUrgentContactMore,
+        iconUrgentContactTipBg,
+        iconVip,
+        iconWechatPayment,
+        iconWechatScanPayment,
+        iconWhiteBack,
+        imgDialogLocationAlwaysTip1,
+        imgDialogLocationAlwaysTip2,
+        imgDialogLocationAlwaysTip3,
+        imgMemberFirstWeekDiscountContainer,
+        imgMemberHeaderAd1,
+        imgMemberHeaderAd2,
+        imgMemberHeaderAd3,
+        imgMemberHeaderAd4,
+        imgMemberRetainContainer,
+        imgMemberUserCancelsContainer,
+        imgTrackAiAnalyse,
+        imgTrackNoData,
+        imgTrackNoMemberTips
+      ];
 }
 
 class Assets {
@@ -832,7 +813,11 @@ class Assets {
 }
 
 class AssetGenImage {
-  const AssetGenImage(this._assetName, {this.size, this.flavors = const {}});
+  const AssetGenImage(
+    this._assetName, {
+    this.size,
+    this.flavors = const {},
+  });
 
   final String _assetName;
 
@@ -892,8 +877,15 @@ class AssetGenImage {
     );
   }
 
-  ImageProvider provider({AssetBundle? bundle, String? package}) {
-    return AssetImage(_assetName, bundle: bundle, package: package);
+  ImageProvider provider({
+    AssetBundle? bundle,
+    String? package,
+  }) {
+    return AssetImage(
+      _assetName,
+      bundle: bundle,
+      package: package,
+    );
   }
 
   String get path => _assetName;

+ 4 - 2
lib/resource/string.gen.dart

@@ -108,7 +108,8 @@ class StringName {
   static String get friendEditBlockTitle => 'friend_edit_block_title'.tr; // 不给Ta看
   static String get blockedFriend => 'blocked_friend'.tr; // 已屏蔽该好友
   static String get blockFriendOff => 'block_friend_off'.tr; // 屏蔽好友已关闭
-  static String get friendDelete => 'friend_delete'.tr; // 屏蔽好友
+  static String get friendDelete => 'friend_delete'.tr; // 删除好友
+  static String get blockFriends => 'block_friends'.tr; // 屏蔽好友
   static String get kindlyReminder => 'kindly_reminder'.tr; // 温馨提示
   static String get friendDeleteContent => 'friend_delete_content'.tr; // 互删好友后,双方将停止共享位置,清除相关定位记录并屏蔽,是否确认互删
   static String get deleteSuccess => 'delete_success'.tr; // 删除成功
@@ -421,7 +422,8 @@ class StringMultiSource {
       'friend_edit_block_title': '不给Ta看',
       'blocked_friend': '已屏蔽该好友',
       'block_friend_off': '屏蔽好友已关闭',
-      'friend_delete': '屏蔽好友',
+      'friend_delete': '删除好友',
+      'block_friends': '屏蔽好友',
       'kindly_reminder': '温馨提示',
       'friend_delete_content': '互删好友后,双方将停止共享位置,清除相关定位记录并屏蔽,是否确认互删',
       'delete_success': '删除成功',

+ 6 - 0
lib/utils/common_util.dart

@@ -1,4 +1,6 @@
 import 'package:flutter/services.dart';
+import 'package:get/get.dart';
+import 'package:get/get_core/src/get_main.dart';
 import 'package:location/resource/assets.gen.dart';
 
 import '../data/consts/payment_type.dart';
@@ -70,3 +72,7 @@ void copyToClipboard(String content) {
   Clipboard.setData(ClipboardData(text: content));
 }
 
+
+void backToSpecificPage(String targetRoute) {
+  Get.until((route) => Get.currentRoute == targetRoute);
+}

+ 9 - 0
plugins/map_amap_android/android/src/main/java/com/atmob/map_amap_android/bean/MapPadding.java

@@ -2,11 +2,20 @@ package com.atmob.map_amap_android.bean;
 
 import androidx.annotation.NonNull;
 
+import com.google.gson.annotations.SerializedName;
+
 public class MapPadding {
 
+    @SerializedName("left")
     public float left;
+
+    @SerializedName("top")
     public float top;
+
+    @SerializedName("right")
     public float right;
+
+    @SerializedName("bottom")
     public float bottom;
 
     public MapPadding(float left, float top, float right, float bottom) {

+ 1 - 1
plugins/map_amap_ios/pubspec.yaml

@@ -4,7 +4,7 @@ version: 0.0.1
 homepage:
 
 environment:
-  sdk: ^3.8.1
+  sdk: ^3.0.0
   flutter: '>=3.3.0'
 
 dependencies:

Разница между файлами не показана из-за своего большого размера
+ 292 - 279
pubspec.lock