Browse Source

[new]增加无轨迹弹窗显示

zk 8 tháng trước cách đây
mục cha
commit
fcc6f553e7

+ 5 - 0
assets/string/base/string.xml

@@ -173,5 +173,10 @@
 
     <string name="track_choose_time_error">时间范围不能超过24小时且开始时间需小于结束时间</string>
     <string name="track_loading_txt">正在查询中...</string>
+    <string name="member_expired">会员已过期</string>
+    <string name="got_it">知道了</string>
+    <string name="track_no_data">
+        该时段内未查询到历史轨迹记录\n\n1.可能是该用户未登录本软件\n2.可能是该用户未运行我们的软件\n3.可能是对方未开启定位和网络连接等原因
+    </string>
 
 </resources>

+ 5 - 4
lib/di/get_it.config.dart

@@ -66,10 +66,6 @@ extension GetItInjectableX on _i174.GetIt {
         () => _i1008.LoginController(gh<_i20.AccountRepository>()));
     gh.factory<_i732.MineController>(
         () => _i732.MineController(gh<_i20.AccountRepository>()));
-    gh.factory<_i518.TrackController>(() => _i518.TrackController(
-          gh<_i240.TrackRepository>(),
-          gh<_i1053.FriendsRepository>(),
-        ));
     gh.lazySingleton<_i825.ConfigRepository>(() => _i825.ConfigRepository(
           gh<_i243.AtmobApi>(),
           gh<_i1053.FriendsRepository>(),
@@ -78,6 +74,11 @@ extension GetItInjectableX on _i174.GetIt {
           gh<_i20.AccountRepository>(),
           gh<_i1053.FriendsRepository>(),
         ));
+    gh.factory<_i518.TrackController>(() => _i518.TrackController(
+          gh<_i240.TrackRepository>(),
+          gh<_i1053.FriendsRepository>(),
+          gh<_i20.AccountRepository>(),
+        ));
     gh.factory<_i731.MainController>(() => _i731.MainController(
           gh<_i1053.FriendsRepository>(),
           gh<_i20.AccountRepository>(),

+ 15 - 0
lib/dialog/common_confirm_dialog_impl.dart

@@ -85,3 +85,18 @@ void showTraceTipsDialog({required VoidCallback onConfirm}) {
       confirmText: StringName.dialogGoLogin,
       confirmOnTap: onConfirm);
 }
+
+void showTraceNoDataDialog({required VoidCallback onConfirm}) {
+  CommonConfirmDialog.show(
+      titleWidget: Text(StringName.kindlyReminder,
+          style: TextStyle(
+              fontSize: 17.sp,
+              color: '#333333'.color,
+              fontWeight: FontWeight.bold)),
+      descWidget: Text(
+        StringName.trackNoData,
+        style: TextStyle(fontSize: 14.sp, color: '#404040'.color),
+      ),
+      confirmText: StringName.gotIt,
+      confirmOnTap: onConfirm);
+}

+ 1 - 1
lib/module/friend/friend_controller.dart

@@ -75,7 +75,7 @@ class FriendController extends BaseController {
       });
       return;
     }
-    if (accountRepository.memberIsExpired()) {
+    if (!(userInfo.virtual ?? false) && accountRepository.memberIsExpired()) {
       MemberPage.start();
       return;
     }

+ 1 - 1
lib/module/main/main_controller.dart

@@ -244,7 +244,7 @@ class MainController extends BaseController {
       });
       return;
     }
-    if (accountRepository.memberIsExpired()) {
+    if (!(userInfo.virtual ?? false) && accountRepository.memberIsExpired()) {
       MemberPage.start();
       return;
     }

+ 55 - 15
lib/module/track/track_controller.dart

@@ -8,20 +8,24 @@ import 'package:injectable/injectable.dart';
 import 'package:location/base/base_controller.dart';
 import 'package:location/data/bean/location_info.dart';
 import 'package:location/data/consts/constants.dart';
+import 'package:location/data/consts/error_code.dart';
+import 'package:location/data/repositories/account_repository.dart';
 import 'package:location/data/repositories/friends_repository.dart';
 import 'package:location/data/repositories/track_repository.dart';
 import 'package:location/dialog/loading_dialog.dart';
 import 'package:location/handler/error_handler.dart';
+import 'package:location/module/member/member_page.dart';
 import 'package:location/module/track/track_util.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/http_handler.dart';
 import 'package:location/utils/toast_util.dart';
 import 'package:sliding_sheet2/sliding_sheet2.dart';
 import '../../data/bean/atmob_track_point.dart';
 import '../../data/bean/user_info.dart';
+import '../../dialog/common_confirm_dialog_impl.dart';
 import '../../utils/date_util.dart';
-import '../../utils/location_convert_marker_util.dart';
 import '../../utils/pair.dart';
 
 @injectable
@@ -66,8 +70,10 @@ class TrackController extends BaseController
 
   final TrackRepository trackRepository;
   final FriendsRepository friendsRepository;
+  final AccountRepository accountRepository;
 
-  TrackController(this.trackRepository, this.friendsRepository);
+  TrackController(
+      this.trackRepository, this.friendsRepository, this.accountRepository);
 
   @override
   void onInit() {
@@ -79,7 +85,7 @@ class TrackController extends BaseController
         length: 2, vsync: this, initialIndex: _currentIndex.value);
     tabController.addListener(_handleTabChange);
     _initTime();
-    _onCurrentLocationQuery(showLoading: false);
+    _onCurrentLocationQuery(isShow: false);
   }
 
   @override
@@ -109,6 +115,10 @@ class TrackController extends BaseController
   }
 
   void onTrackStartTimeClick(BuildContext context) {
+    if (userInfo?.virtual == true && accountRepository.memberIsExpired()) {
+      MemberPage.start();
+      return;
+    }
     DatePicker.showDatePicker(context,
         locale: DateTimePickerLocale.zh_cn,
         initialDateTime: _trackStartTime.value,
@@ -123,6 +133,10 @@ class TrackController extends BaseController
   }
 
   void onTrackEndTimeClick(BuildContext context) {
+    if (userInfo?.virtual == true && accountRepository.memberIsExpired()) {
+      MemberPage.start();
+      return;
+    }
     DatePicker.showDatePicker(context,
         locale: DateTimePickerLocale.zh_cn,
         initialDateTime: _trackEndTime.value,
@@ -137,6 +151,10 @@ class TrackController extends BaseController
   }
 
   void onTrackQueryClick() {
+    if (userInfo?.virtual == false && accountRepository.memberIsExpired()) {
+      MemberPage.start();
+      return;
+    }
     if (currentIndex == 0) {
       _onTrackQuery();
     } else {
@@ -144,21 +162,31 @@ class TrackController extends BaseController
     }
   }
 
-  void _onCurrentLocationQuery({bool showLoading = true}) {
+  void _onCurrentLocationQuery({bool isShow = true}) {
     if (userInfo == null) {
       return;
     }
-    if (showLoading) LoadingDialog.show(StringName.trackLoadingTxt);
-    friendsRepository
-        .getUserInfoFromId(userInfo!.id, isVirtual: userInfo!.virtual)
-        .then((userInfo) {
-      LoadingDialog.hide();
-      _currentLocation.value = userInfo?.lastLocation.value;
-      _showCurrentLocation();
-    }).catchError((error) {
-      debugPrint("error: $error");
-      ErrorHandler.toastError(error);
-    });
+    if (userInfo?.isMine == true) {
+      _currentLocation.value =
+          accountRepository.mineUserInfo.value.lastLocation.value;
+      if (isShow) {
+        _showCurrentLocation();
+      }
+    } else {
+      if (isShow) LoadingDialog.show(StringName.trackLoadingTxt);
+      friendsRepository
+          .getUserInfoFromId(userInfo!.id, isVirtual: userInfo!.virtual)
+          .then((location) {
+        LoadingDialog.hide();
+        _currentLocation.value = userInfo?.lastLocation.value;
+        if (isShow) {
+          _showCurrentLocation();
+        }
+      }).catchError((error) {
+        debugPrint("error: $error");
+        ErrorHandler.toastError(error);
+      });
+    }
   }
 
   void _onTrackQuery() {
@@ -217,6 +245,14 @@ class TrackController extends BaseController
     }).catchError((error) {
       LoadingDialog.hide();
       if (error is TrackQueryException) {
+        showQueryErrorDialog();
+      } else if (error is ServerErrorException) {
+        if (error.code == ErrorCode.noMember) {
+          MemberPage.start();
+          ToastUtil.show(StringName.memberExpired);
+        } else {
+          ToastUtil.show(error.message);
+        }
       } else {
         ErrorHandler.toastError(error);
       }
@@ -281,6 +317,10 @@ class TrackController extends BaseController
     // drawMarker();
     //显示终点标记
   }
+
+  void showQueryErrorDialog() {
+    showTraceNoDataDialog(onConfirm: () {});
+  }
 }
 
 class TrackQueryException implements Exception {

+ 11 - 10
lib/resource/string.gen.dart

@@ -128,24 +128,22 @@ class StringName {
   static final String shareFriendTitle = 'share_friend_title'.tr; // 邀请好友
   static final String shareFriendDesc = 'share_friend_desc'.tr; // 将应用分享给好友,需要好友下载安装并同意授权后可查看定位。
   static final String wechatNoInstall = 'wechat_no_install'.tr; // 微信未安装
-  static final String dialogNotLoginViewTraceTip =
-      'dialog_not_login_view_trace_tip'.tr; // 登录即可体验查看轨迹记录
-  static final String friendNotOpenLocationShare =
-      'friend_not_open_location_share'.tr; // 该好友没有开启位置分享
-  static final String friendGoInstructHim =
-      'friend_go_instruct_him'.tr; // 去通知Ta
+  static final String dialogNotLoginViewTraceTip = 'dialog_not_login_view_trace_tip'.tr; // 登录即可体验查看轨迹记录
+  static final String friendNotOpenLocationShare = 'friend_not_open_location_share'.tr; // 该好友没有开启位置分享
+  static final String friendGoInstructHim = 'friend_go_instruct_him'.tr; // 去通知Ta
   static final String trackQueryPath = 'track_query_path'.tr; // 查询轨迹
-  static final String trackQueryNowLocation =
-      'track_query_now_location'.tr; // 查询位置
+  static final String trackQueryNowLocation = 'track_query_now_location'.tr; // 查询位置
   static final String trackHistory = 'track_history'.tr; // 历史轨迹
   static final String trackNowLocation = 'track_now_location'.tr; // 当前位置
   static final String trackStartTime = 'track_start_time'.tr; // 开始时间:
   static final String trackEndTime = 'track_end_time'.tr; // 结束时间:
   static final String trackStartLocation = 'track_start_location'.tr; // 起点:
   static final String trackEndLocation = 'track_end_location'.tr; // 终点:
-  static final String trackChooseTimeError =
-      'track_choose_time_error'.tr; // 时间范围不能超过24小时且开始时间需小于结束时间
+  static final String trackChooseTimeError = 'track_choose_time_error'.tr; // 时间范围不能超过24小时且开始时间需小于结束时间
   static final String trackLoadingTxt = 'track_loading_txt'.tr; // 正在查询中...
+  static final String memberExpired = 'member_expired'.tr; // 会员已过期
+  static final String gotIt = 'got_it'.tr; // 知道了
+  static final String trackNoData = 'track_no_data'.tr; // 该时段内未查询到历史轨迹记录\n\n1.可能是该用户未登录本软件\n2.可能是该用户未运行我们的软件\n3.可能是对方未开启定位和网络连接等原因
 }
 class StringMultiSource {
   StringMultiSource._();
@@ -290,6 +288,9 @@ class StringMultiSource {
       'track_end_location': '终点:',
       'track_choose_time_error': '时间范围不能超过24小时且开始时间需小于结束时间',
       'track_loading_txt': '正在查询中...',
+      'member_expired': '会员已过期',
+      'got_it': '知道了',
+      'track_no_data': '该时段内未查询到历史轨迹记录\n\n1.可能是该用户未登录本软件\n2.可能是该用户未运行我们的软件\n3.可能是对方未开启定位和网络连接等原因',
     },
   };
 }