Forráskód Böngészése

[new]好友显示增加屏蔽功能

zk 10 hónapja
szülő
commit
ba4b960e87

+ 3 - 0
lib/data/consts/constants.dart

@@ -32,6 +32,9 @@ class Constants {
   static const String appTgPlatformId = "app_tg_platform_id";
 
   static const String mineLocationId = '-1';
+
+  static const double blurredX = 4.2;
+  static const double blurredY = 4.2;
 }
 
 String getBaseUrl() {

+ 4 - 1
lib/data/repositories/friends_repository.dart

@@ -100,7 +100,10 @@ class FriendsRepository {
   Future<void> deleteFriend(String friendId) {
     return atmobApi
         .deleteFriend(FriendsOperationRequest(friendId: friendId))
-        .then(HttpHandler.handle(true));
+        .then(HttpHandler.handle(true))
+        .then((_) {
+      refreshFriends();
+    });
   }
 
   Future<void> updateFriendRemark(String friendId, String remark) {

+ 15 - 5
lib/module/friend/friend_list_item.dart

@@ -1,9 +1,12 @@
+import 'dart:ui';
+
 import 'package:flutter/cupertino.dart';
 import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:location/resource/string.gen.dart';
 import 'package:location/utils/common_expand.dart';
 
 import '../../data/bean/user_info.dart';
+import '../../data/consts/constants.dart';
 import '../../resource/assets.gen.dart';
 import '../../resource/colors.gen.dart';
 import '../../utils/date_util.dart';
@@ -107,11 +110,18 @@ Widget buildFriendItem(UserInfo userInfo, {VoidCallback? onEditClick}) {
                     constraints: BoxConstraints(minHeight: 34.w),
                     child: Align(
                       alignment: Alignment.centerLeft,
-                      child: Text(
-                          userInfo.lastLocation.value?.address ??
-                              StringName.unopenedPositioning,
-                          style: TextStyle(
-                              fontSize: 13.sp, color: '#404040'.color)),
+                      child: ImageFiltered(
+                        enabled: userInfo.blockedMe == true,
+                        imageFilter: ImageFilter.blur(
+                          sigmaX: Constants.blurredX,
+                          sigmaY: Constants.blurredY,
+                        ),
+                        child: Text(
+                            userInfo.lastLocation.value?.address ??
+                                StringName.unopenedPositioning,
+                            style: TextStyle(
+                                fontSize: 13.sp, color: '#404040'.color)),
+                      ),
                     ),
                   ),
                 ),

+ 4 - 2
lib/module/main/main_controller.dart

@@ -76,7 +76,8 @@ class MainController extends BaseController {
       integrateList.assignAll(list);
       integrateList.insert(0, mineUserInfo);
       mapController.replaceAllMarkers(
-          Location2MarkerUtil.userInfoList2MarkerList(list, selectedFriend));
+          Location2MarkerUtil.userInfoList2MarkerList(
+              integrateList, selectedFriend));
       if (selectedFriend != null) {
         UserInfo? userInfo = integrateList
             .firstWhereOrNull((element) => element.id == selectedFriend?.id);
@@ -136,7 +137,8 @@ class MainController extends BaseController {
         locationInfo.longitude == null ||
         locationInfo.latitude == null ||
         locationInfo.longitude == 0 ||
-        locationInfo.latitude == 0) {
+        locationInfo.latitude == 0 ||
+        userInfo.blockedMe == true) {
       return;
     }
     animateCamera(

+ 22 - 6
lib/module/main/main_friend_item.dart

@@ -1,7 +1,10 @@
+import 'dart:ui';
+
 import 'package:flutter/cupertino.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:location/data/bean/user_info.dart';
+import 'package:location/data/consts/constants.dart';
 import 'package:location/resource/assets.gen.dart';
 import 'package:location/resource/colors.gen.dart';
 import 'package:location/resource/string.gen.dart';
@@ -124,12 +127,25 @@ Widget mainSelectedFriendItem(UserInfo userInfo) {
                   Expanded(
                     child: Container(
                       margin: EdgeInsets.only(right: 17.w),
-                      child: MarqueeText.marquee(
-                          text: addressCheck(
-                              userInfo.lastLocation.value?.address),
-                          textStyle: TextStyle(
-                              fontSize: 13.sp, color: ColorName.black50),
-                          containerWidth: 244.w),
+                      child: ImageFiltered(
+                        enabled: userInfo.blockedMe == true,
+                        imageFilter: ImageFilter.blur(
+                          sigmaX: Constants.blurredX,
+                          sigmaY: Constants.blurredY,
+                        ),
+                        child: userInfo.blockedMe == true
+                            ? Text(
+                                addressCheck(
+                                    userInfo.lastLocation.value?.address),
+                                style: TextStyle(
+                                    fontSize: 13.sp, color: ColorName.black50))
+                            : MarqueeText.marquee(
+                                text: addressCheck(
+                                    userInfo.lastLocation.value?.address),
+                                textStyle: TextStyle(
+                                    fontSize: 13.sp, color: ColorName.black50),
+                                containerWidth: 244.w),
+                      ),
                     ),
                   )
                   // Text('广东省广州市天河区XX街街XX街区XX村XX')

+ 14 - 4
lib/utils/location_convert_marker_util.dart

@@ -7,7 +7,7 @@ class Location2MarkerUtil {
   static Marker userInfo2Marker(UserInfo e, bool isSelected) {
     return Marker(
       id: e.id,
-      markerName: e.remark ?? e.phoneNumber,
+      markerName: e.getUserNickName(),
       longitude: e.lastLocation.value?.longitude,
       latitude: e.lastLocation.value?.latitude,
       markerType: MarkerType.friend,
@@ -17,8 +17,18 @@ class Location2MarkerUtil {
 
   static List<Marker> userInfoList2MarkerList(
       List<UserInfo> list, UserInfo? selectedFriend) {
-    return list
-        .map((e) => userInfo2Marker(e, e.id == selectedFriend?.id))
-        .toList();
+    List<Marker> markers = [];
+    for (var e in list) {
+      if ((e.isMine == true || e.blockedMe != true) &&
+          e.lastLocation.value?.longitude != null &&
+          e.lastLocation.value?.latitude != null) {
+        markers.add(userInfo2Marker(e, e.id == selectedFriend?.id));
+      }
+    }
+    return markers;
+    // return list
+    //     .where((e) => e.blockedHim != true)
+    //     .map((e) => userInfo2Marker(e, e.id == selectedFriend?.id))
+    //     .toList();
   }
 }