ソースを参照

[fix]优化无会员时任然显示定位信息的问题

zk 8 ヶ月 前
コミット
520075ab76

+ 4 - 0
lib/module/friend/friend_controller.dart

@@ -7,6 +7,7 @@ import 'package:location/data/repositories/account_repository.dart';
 import 'package:location/data/repositories/friends_repository.dart';
 import 'package:location/module/friend/setting/friend_setting_page.dart';
 import 'package:location/module/news/news_page.dart';
+import '../../data/bean/member_status_info.dart';
 import '../../data/bean/user_info.dart';
 import '../../dialog/common_alert_dialog_impl.dart';
 import '../../dialog/common_confirm_dialog_impl.dart';
@@ -25,6 +26,9 @@ class FriendController extends BaseController {
 
   UserInfo? get virtualFriendInfo => friendsRepository.virtualFriendInfo.value;
 
+  Rxn<MemberStatusInfo> get memberStatusInfo =>
+      accountRepository.memberStatusInfo;
+
   RxList<UserInfo> get friendsList => friendsRepository.friendsList;
 
   final ScrollController scrollController = ScrollController();

+ 3 - 2
lib/module/friend/friend_list_item.dart

@@ -11,7 +11,7 @@ import '../../resource/assets.gen.dart';
 import '../../resource/colors.gen.dart';
 import '../../utils/date_util.dart';
 
-Widget buildFriendItem(UserInfo userInfo,
+Widget buildFriendItem(UserInfo userInfo, bool isMemberExpired,
     {VoidCallback? onEditClick, VoidCallback? viewTraceClick}) {
   return Container(
     margin: EdgeInsets.only(left: 12.w, right: 12.w, bottom: 10.w),
@@ -117,7 +117,8 @@ Widget buildFriendItem(UserInfo userInfo,
                     child: Align(
                       alignment: Alignment.centerLeft,
                       child: ImageFiltered(
-                        enabled: userInfo.blockedMe == true,
+                        enabled: userInfo.blockedMe == true ||
+                            (isMemberExpired && !(userInfo.isMine == true)),
                         imageFilter: ImageFilter.blur(
                           sigmaX: Constants.blurredX,
                           sigmaY: Constants.blurredY,

+ 9 - 3
lib/module/friend/friend_page.dart

@@ -63,7 +63,7 @@ class FriendPage extends BasePage<FriendController> {
                       ),
                       SizedBox(height: 10.w),
                       Obx(() {
-                        return buildFriendItem(controller.mineUserInfo,
+                        return buildFriendItem(controller.mineUserInfo, false,
                             onEditClick: () =>
                                 controller.onEditClick(controller.mineUserInfo),
                             viewTraceClick: () => controller
@@ -72,13 +72,19 @@ class FriendPage extends BasePage<FriendController> {
                       Obx(() {
                         return controller.virtualFriendInfo == null
                             ? SizedBox.shrink()
-                            : buildFriendItem(controller.virtualFriendInfo!,
+                            : buildFriendItem(
+                                controller.virtualFriendInfo!, false,
                                 viewTraceClick: () =>
                                     controller.onViewTraceClick(
                                         controller.virtualFriendInfo!));
                       }),
                       ...controller.friendsList.map((e) => Obx(() {
-                            return buildFriendItem(e,
+                            return buildFriendItem(
+                                e,
+                                (controller.memberStatusInfo.value == null ||
+                                    controller
+                                            .memberStatusInfo.value?.expired ==
+                                        true),
                                 onEditClick: () => controller.onEditClick(e),
                                 viewTraceClick: () =>
                                     controller.onViewTraceClick(e));

+ 12 - 5
lib/module/main/main_controller.dart

@@ -24,6 +24,7 @@ import 'package:location/sdk/map/map_helper.dart';
 import 'package:location/utils/mmkv_util.dart';
 import 'package:location/utils/toast_util.dart';
 
+import '../../data/bean/member_status_info.dart';
 import '../../data/repositories/config_repository.dart';
 import '../../data/repositories/urgent_contact_repository.dart';
 import '../../dialog/check_loation_permission_dialog.dart';
@@ -43,6 +44,9 @@ import '../track/track_page.dart';
 class MainController extends BaseController {
   RxList<UserInfo> get _friendsList => friendsRepository.friendsList;
 
+  Rxn<MemberStatusInfo> get memberStatusInfo =>
+      accountRepository.memberStatusInfo;
+
   RxList<UserInfo> integrateList = RxList();
 
   UserInfo get mineUserInfo => accountRepository.mineUserInfo.value;
@@ -104,8 +108,8 @@ class MainController extends BaseController {
       integrateList.add(mineUserInfo);
       integrateList.addAll(list);
       mapController.replaceAllMarkers(
-          Location2MarkerUtil.userInfoList2MarkerList(
-              integrateList, selectedFriend));
+          Location2MarkerUtil.userInfoList2MarkerList(integrateList,
+              accountRepository.memberIsExpired(), selectedFriend));
       if (selectedFriend != null) {
         UserInfo? userInfo = integrateList
             .firstWhereOrNull((element) => element.id == selectedFriend?.id);
@@ -153,8 +157,10 @@ class MainController extends BaseController {
     _selectedFriend.value = userInfo;
     //修改地图选中
     _updateMapSelected(oldInfo, userInfo);
-    //移动到选中的位置
-    animateCameraToUser(userInfo);
+    if (!accountRepository.memberIsExpired() || userInfo.isMine == true) {
+      //移动到选中的位置
+      animateCameraToUser(userInfo);
+    }
   }
 
   void _updateMapSelected(UserInfo? oldInfo, UserInfo newInfo) {
@@ -164,7 +170,8 @@ class MainController extends BaseController {
     }
     markers.add(newInfo);
     mapController.updateOrAddMarkers(
-        Location2MarkerUtil.userInfoList2MarkerList(markers, selectedFriend));
+        Location2MarkerUtil.userInfoList2MarkerList(
+            markers, accountRepository.memberIsExpired(), selectedFriend));
   }
 
   void animateCameraToUser(UserInfo userInfo) {

+ 5 - 3
lib/module/main/main_friend_item.dart

@@ -73,7 +73,7 @@ Widget mainFriendItem(UserInfo userInfo, bool isSelected,
   );
 }
 
-Widget mainSelectedFriendItem(UserInfo userInfo,
+Widget mainSelectedFriendItem(UserInfo userInfo, bool isMemberExpired,
     {VoidCallback? viewTraceClick}) {
   return Container(
       width: 336.w,
@@ -134,12 +134,14 @@ Widget mainSelectedFriendItem(UserInfo userInfo,
                     child: Container(
                       margin: EdgeInsets.only(right: 17.w),
                       child: ImageFiltered(
-                        enabled: userInfo.blockedMe == true,
+                        enabled: userInfo.blockedMe == true ||
+                            (isMemberExpired && !(userInfo.isMine == true)),
                         imageFilter: ImageFilter.blur(
                           sigmaX: Constants.blurredX,
                           sigmaY: Constants.blurredY,
                         ),
-                        child: userInfo.blockedMe == true
+                        child: userInfo.blockedMe == true ||
+                                (isMemberExpired && !(userInfo.isMine == true))
                             ? Text(
                                 addressCheck(
                                     userInfo.lastLocation.value?.address),

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

@@ -228,7 +228,10 @@ class MainPage extends BasePage<MainController> {
       if (userInfo == null) {
         return SizedBox.shrink();
       }
-      return mainSelectedFriendItem(userInfo,
+      return mainSelectedFriendItem(
+          userInfo,
+          (controller.memberStatusInfo.value == null ||
+              controller.memberStatusInfo.value?.expired == true),
           viewTraceClick: () => controller.onViewTraceClick(userInfo));
     });
   }

+ 7 - 4
lib/utils/location_convert_marker_util.dart

@@ -18,13 +18,16 @@ class Location2MarkerUtil {
     );
   }
 
-  static List<Marker> userInfoList2MarkerList(
-      List<UserInfo> list, UserInfo? selectedFriend) {
+  static List<Marker> userInfoList2MarkerList(List<UserInfo> list,
+      bool isMemberExpired, UserInfo? selectedFriend) {
     List<Marker> markers = [];
     for (var e in list) {
-      if ((e.isMine == true || e.blockedMe != true) &&
+      if (e.isMine == true) {
+        markers.add(userInfo2Marker(e, e.id == selectedFriend?.id));
+      } else if (e.blockedMe != true &&
           e.lastLocation.value?.longitude != null &&
-          e.lastLocation.value?.latitude != null) {
+          e.lastLocation.value?.latitude != null &&
+          !isMemberExpired) {
         markers.add(userInfo2Marker(e, e.id == selectedFriend?.id));
       }
     }

+ 22 - 22
pubspec.lock

@@ -5,15 +5,15 @@ packages:
     dependency: transitive
     description:
       name: _fe_analyzer_shared
-      sha256: "16e298750b6d0af7ce8a3ba7c18c69c3785d11b15ec83f6dcd0ad2a0009b3cab"
+      sha256: f256b0c0ba6c7577c15e2e4e114755640a875e885099367bf6e012b19314c834
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "76.0.0"
+    version: "72.0.0"
   _macros:
     dependency: transitive
     description: dart
     source: sdk
-    version: "0.3.3"
+    version: "0.3.2"
   agile_pay:
     dependency: "direct main"
     description:
@@ -41,10 +41,10 @@ packages:
     dependency: transitive
     description:
       name: analyzer
-      sha256: "1f14db053a8c23e260789e9b0980fa27f2680dd640932cae5e1137cce0e46e1e"
+      sha256: b652861553cd3990d8ed361f7979dc6d7053a9ac8843fa73820ab68ce5410139
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "6.11.0"
+    version: "6.7.0"
   android_id:
     dependency: "direct main"
     description:
@@ -217,10 +217,10 @@ packages:
     dependency: transitive
     description:
       name: collection
-      sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf
+      sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "1.19.0"
+    version: "1.18.0"
   color:
     dependency: transitive
     description:
@@ -685,18 +685,18 @@ packages:
     dependency: transitive
     description:
       name: leak_tracker
-      sha256: "7bb2830ebd849694d1ec25bf1f44582d6ac531a57a365a803a6034ff751d2d06"
+      sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05"
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "10.0.7"
+    version: "10.0.5"
   leak_tracker_flutter_testing:
     dependency: transitive
     description:
       name: leak_tracker_flutter_testing
-      sha256: "9491a714cca3667b60b5c420da8217e6de0d1ba7a5ec322fab01758f6998f379"
+      sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806"
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "3.0.8"
+    version: "3.0.5"
   leak_tracker_testing:
     dependency: transitive
     description:
@@ -725,10 +725,10 @@ packages:
     dependency: transitive
     description:
       name: macros
-      sha256: "1d9e801cd66f7ea3663c45fc708450db1fa57f988142c64289142c9b7ee80656"
+      sha256: "0acaed5d6b7eab89f63350bccd82119e6c602df0f391260d0e32b5e23db79536"
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "0.1.3-main.0"
+    version: "0.1.2-main.4"
   map_amap_android:
     dependency: "direct main"
     description:
@@ -1101,7 +1101,7 @@ packages:
     dependency: transitive
     description: flutter
     source: sdk
-    version: "0.0.0"
+    version: "0.0.99"
   sliding_sheet2:
     dependency: "direct main"
     description:
@@ -1138,10 +1138,10 @@ packages:
     dependency: transitive
     description:
       name: stack_trace
-      sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377"
+      sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b"
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "1.12.0"
+    version: "1.11.1"
   stream_channel:
     dependency: transitive
     description:
@@ -1171,10 +1171,10 @@ packages:
     dependency: transitive
     description:
       name: string_scanner
-      sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3"
+      sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde"
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "1.3.0"
+    version: "1.2.0"
   synchronized:
     dependency: "direct main"
     description:
@@ -1195,10 +1195,10 @@ packages:
     dependency: transitive
     description:
       name: test_api
-      sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c"
+      sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb"
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "0.7.3"
+    version: "0.7.2"
   time:
     dependency: transitive
     description:
@@ -1315,10 +1315,10 @@ packages:
     dependency: transitive
     description:
       name: vm_service
-      sha256: f6be3ed8bd01289b34d679c2b62226f63c0e69f9fd2e50a6b3c1c729a961041b
+      sha256: f652077d0bdf60abe4c1f6377448e8655008eef28f128bc023f7b5e8dfeb48fc
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "14.3.0"
+    version: "14.2.4"
   watcher:
     dependency: transitive
     description: