Browse Source

add:添加轨迹广告弹窗。

zhoukun 6 months ago
parent
commit
3c108ed398

+ 7 - 1
lib/data/api/atmob_api.dart

@@ -31,7 +31,6 @@ import 'package:location/data/api/response/location_track_days_response.dart';
 import 'package:location/data/api/response/login_response.dart';
 import 'package:location/data/api/response/member_status_response.dart';
 import 'package:location/data/api/response/member_trial_info_response.dart';
-import 'package:location/data/api/response/member_trial_response.dart';
 import 'package:location/data/api/response/message_response.dart';
 import 'package:location/data/api/response/order_first_check_response.dart';
 import 'package:location/data/api/response/order_status_response.dart';
@@ -39,11 +38,13 @@ import 'package:location/data/api/response/query_track_response.dart';
 import 'package:location/data/api/response/request_friend_list_response.dart';
 import 'package:location/data/api/response/request_pay_response.dart';
 import 'package:location/data/api/response/subscription_check_response.dart';
+import 'package:location/data/api/response/track_daily_dialogs_response.dart';
 import 'package:location/data/api/response/track_daily_response.dart';
 import 'package:location/data/api/response/user_avatar_response.dart';
 import 'package:retrofit/error_logger.dart';
 import 'package:retrofit/http.dart';
 import 'package:retrofit/dio.dart';
+import '../bean/track_daily_dialogs_info.dart';
 import '../bean/user_info.dart';
 
 part 'atmob_api.g.dart';
@@ -221,4 +222,9 @@ abstract class AtmobApi {
   @POST("/central/notification/v1/notification/report")
   Future<BaseResponse> notificationReport(
       @Body() NotificationReportRequest request);
+
+  ///每日轨迹弹框报告-中台
+  @POST("/s/v1/location/track/daily/dialogs")
+  Future<BaseResponse<TrackDailyDialogsResponse>> locationTrackDailyDialogs(
+      @Body() AppBaseRequest request);
 }

+ 40 - 0
lib/data/api/atmob_api.g.dart

@@ -1662,6 +1662,46 @@ class _AtmobApi implements AtmobApi {
     return _value;
   }
 
+  @override
+  Future<BaseResponse<TrackDailyDialogsResponse>> locationTrackDailyDialogs(
+      AppBaseRequest request) async {
+    final _extra = <String, dynamic>{};
+    final queryParameters = <String, dynamic>{};
+    final _headers = <String, dynamic>{};
+    final _data = <String, dynamic>{};
+    _data.addAll(request.toJson());
+    final _options =
+        _setStreamType<BaseResponse<TrackDailyDialogsResponse>>(Options(
+      method: 'POST',
+      headers: _headers,
+      extra: _extra,
+    )
+            .compose(
+              _dio.options,
+              '/s/v1/location/track/daily/dialogs',
+              queryParameters: queryParameters,
+              data: _data,
+            )
+            .copyWith(
+                baseUrl: _combineBaseUrls(
+              _dio.options.baseUrl,
+              baseUrl,
+            )));
+    final _result = await _dio.fetch<Map<String, dynamic>>(_options);
+    late BaseResponse<TrackDailyDialogsResponse> _value;
+    try {
+      _value = BaseResponse<TrackDailyDialogsResponse>.fromJson(
+        _result.data!,
+        (json) =>
+            TrackDailyDialogsResponse.fromJson(json as Map<String, dynamic>),
+      );
+    } on Object catch (e, s) {
+      errorLogger?.logError(e, s, _options);
+      rethrow;
+    }
+    return _value;
+  }
+
   RequestOptions newRequestOptions(Object? options) {
     if (options is RequestOptions) {
       return options as RequestOptions;

+ 19 - 0
lib/data/api/response/track_daily_dialogs_response.dart

@@ -0,0 +1,19 @@
+
+
+import 'package:json_annotation/json_annotation.dart';
+import '../../bean/track_daily_dialogs_info.dart';
+part 'track_daily_dialogs_response.g.dart';
+
+@JsonSerializable()
+class TrackDailyDialogsResponse {
+  @JsonKey(name: 'show')
+  bool? show;
+
+  @JsonKey(name: "list")
+  List<TrackDailyDialogsInfo>? trackDailyList;
+
+  TrackDailyDialogsResponse({this.trackDailyList,this.show});
+
+  factory TrackDailyDialogsResponse.fromJson(Map<String, dynamic> json) =>
+      _$TrackDailyDialogsResponseFromJson(json);
+}

+ 24 - 0
lib/data/api/response/track_daily_dialogs_response.g.dart

@@ -0,0 +1,24 @@
+// GENERATED CODE - DO NOT MODIFY BY HAND
+
+part of 'track_daily_dialogs_response.dart';
+
+// **************************************************************************
+// JsonSerializableGenerator
+// **************************************************************************
+
+TrackDailyDialogsResponse _$TrackDailyDialogsResponseFromJson(
+        Map<String, dynamic> json) =>
+    TrackDailyDialogsResponse(
+      trackDailyList: (json['list'] as List<dynamic>?)
+          ?.map(
+              (e) => TrackDailyDialogsInfo.fromJson(e as Map<String, dynamic>))
+          .toList(),
+      show: json['show'] as bool?,
+    );
+
+Map<String, dynamic> _$TrackDailyDialogsResponseToJson(
+        TrackDailyDialogsResponse instance) =>
+    <String, dynamic>{
+      'show': instance.show,
+      'list': instance.trackDailyList,
+    };

+ 39 - 0
lib/data/bean/track_daily_dialogs_info.dart

@@ -0,0 +1,39 @@
+
+import 'package:json_annotation/json_annotation.dart';
+
+part 'track_daily_dialogs_info.g.dart';
+
+@JsonSerializable()
+class TrackDailyDialogsInfo {
+
+  ///好友id
+  @JsonKey(name: 'friendId')
+  String? friendId;
+
+  ///手机号码
+  @JsonKey(name: 'phone')
+  String? phone;
+
+  ///备注
+  @JsonKey(name: 'remark')
+  String? remark;
+
+  /// 头像
+  @JsonKey(name: 'avatar')
+  String? avatar;
+
+  ///名称
+  @JsonKey(name: 'name')
+  String? name;
+
+  TrackDailyDialogsInfo({
+    this.friendId,
+    this.phone,
+    this.remark,
+    this.avatar,
+    this.name,
+  });
+
+  factory TrackDailyDialogsInfo.fromJson(Map<String, dynamic> json) =>
+      _$TrackDailyDialogsInfoFromJson(json);
+}

+ 27 - 0
lib/data/bean/track_daily_dialogs_info.g.dart

@@ -0,0 +1,27 @@
+// GENERATED CODE - DO NOT MODIFY BY HAND
+
+part of 'track_daily_dialogs_info.dart';
+
+// **************************************************************************
+// JsonSerializableGenerator
+// **************************************************************************
+
+TrackDailyDialogsInfo _$TrackDailyDialogsInfoFromJson(
+        Map<String, dynamic> json) =>
+    TrackDailyDialogsInfo(
+      friendId: json['friendId'] as String?,
+      phone: json['phone'] as String?,
+      remark: json['remark'] as String?,
+      avatar: json['avatar'] as String?,
+      name: json['name'] as String?,
+    );
+
+Map<String, dynamic> _$TrackDailyDialogsInfoToJson(
+        TrackDailyDialogsInfo instance) =>
+    <String, dynamic>{
+      'friendId': instance.friendId,
+      'phone': instance.phone,
+      'remark': instance.remark,
+      'avatar': instance.avatar,
+      'name': instance.name,
+    };

+ 12 - 1
lib/data/repositories/track_repository.dart

@@ -10,7 +10,7 @@ import '../../utils/http_handler.dart';
 import '../api/request/query_track_request.dart';
 import '../api/response/location_track_days_response.dart';
 import '../api/response/query_track_response.dart';
-import '../api/response/track_daily_response.dart';
+import '../api/response/track_daily_dialogs_response.dart';
 import '../bean/track_daily_bean.dart';
 import '../bean/track_days.dart';
 
@@ -88,4 +88,15 @@ class TrackRepository {
       return response.trackDailyList;
     });
   }
+
+  ///每日轨迹弹框报告-中台
+  Future<TrackDailyDialogsResponse>locationTrackDailyDialogs() {
+    return atmobApi
+        .locationTrackDailyDialogs(AppBaseRequest())
+        .then(HttpHandler.handle(true))
+        .then((response) {
+      return response;
+    });
+  }
+
 }

+ 9 - 8
lib/di/get_it.config.dart

@@ -103,14 +103,6 @@ extension GetItInjectableX on _i174.GetIt {
               gh<_i791.MessageRepository>(),
               gh<_i1053.FriendsRepository>(),
             ));
-    gh.factory<_i731.MainController>(() => _i731.MainController(
-          gh<_i1053.FriendsRepository>(),
-          gh<_i20.AccountRepository>(),
-          gh<_i791.MessageRepository>(),
-          gh<_i220.AtmobLocationClient>(),
-          gh<_i983.UrgentContactRepository>(),
-          gh<_i825.ConfigRepository>(),
-        ));
     gh.factory<_i955.AddUrgentContactController>(
         () => _i955.AddUrgentContactController(
               gh<_i983.UrgentContactRepository>(),
@@ -134,6 +126,15 @@ extension GetItInjectableX on _i174.GetIt {
           gh<_i825.ConfigRepository>(),
           gh<_i814.MemberRepository>(),
         ));
+    gh.factory<_i731.MainController>(() => _i731.MainController(
+          gh<_i1053.FriendsRepository>(),
+          gh<_i20.AccountRepository>(),
+          gh<_i791.MessageRepository>(),
+          gh<_i220.AtmobLocationClient>(),
+          gh<_i983.UrgentContactRepository>(),
+          gh<_i825.ConfigRepository>(),
+          gh<_i240.TrackRepository>(),
+        ));
     gh.lazySingleton<_i779.PaymentStatusManager>(
         () => _i779.PaymentStatusManager(gh<_i814.MemberRepository>()));
     gh.factory<_i269.MemberController>(() => _i269.MemberController(

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

@@ -1,4 +1,5 @@
 import 'dart:async';
+import 'dart:ffi';
 import 'dart:io';
 
 import 'package:flutter/services.dart';
@@ -27,6 +28,7 @@ import 'package:location/utils/toast_util.dart';
 
 import '../../data/bean/member_status_info.dart';
 import '../../data/repositories/config_repository.dart';
+import '../../data/repositories/track_repository.dart';
 import '../../data/repositories/urgent_contact_repository.dart';
 import '../../dialog/check_loation_permission_dialog.dart';
 import '../../dialog/common_alert_dialog_impl.dart';
@@ -40,6 +42,8 @@ import '../../utils/location_convert_marker_util.dart';
 import '../../utils/permission_util.dart';
 import '../add_friend/add_friend_page.dart';
 import '../mine/mine_page.dart';
+import '../track/track_dialog/track_choose_friend_dialog.dart';
+import '../track/track_dialog/track_daily_report_dialog.dart';
 import '../track/track_page.dart';
 import '../urgent_contact/urgent_contact_click_help_dialog.dart';
 
@@ -76,6 +80,7 @@ class MainController extends BaseController {
   final AccountRepository accountRepository;
   final MessageRepository messageRepository;
   final UrgentContactRepository urgentContactRepository;
+  final TrackRepository trackRepository;
 
   bool get hasUnreadMessage => messageRepository.hasUnreadMessage.value;
 
@@ -91,7 +96,8 @@ class MainController extends BaseController {
       this.messageRepository,
       AtmobLocationClient atmobLocationClient,
       this.urgentContactRepository,
-      ConfigRepository configRepository);
+      ConfigRepository configRepository,
+      this.trackRepository);
 
   @override
   void onReady() {
@@ -144,6 +150,24 @@ class MainController extends BaseController {
     });
 
     friendsRepository.refreshFriends();
+
+    ///刷新检查有没有广告
+    _refreshTrackDailyDialogs();
+  }
+
+  ///刷新检查有没有广告
+  void _refreshTrackDailyDialogs() {
+    trackRepository.locationTrackDailyDialogs().then((trackResponse) {
+      if (trackResponse.show ?? false) {
+        TrackDailyReportDialog.show(trackDailyList: trackResponse.trackDailyList,confirmOnTap: () {
+          TrackChooseFriendDialog.show(trackDailyList: trackResponse.trackDailyList,onSelectItem: (selectInfo) {
+
+          });
+        });
+      }
+    }).catchError((error) {
+      ErrorHandler.toastError(error);
+    });
   }
 
   void updateMineInfo(UserInfo mineInfo) {

+ 0 - 10
lib/module/track/track_day_detail/track_day_detail_controller.dart

@@ -9,7 +9,6 @@ import 'package:location/module/track/track_controller.dart';
 import 'package:location/resource/string.gen.dart';
 
 import '../../../data/bean/track_days.dart';
-import '../track_dialog/track_daily_report_dialog.dart';
 
 class TrackDayDetailController extends BaseController {
   final TrackDays days;
@@ -40,15 +39,6 @@ class TrackDayDetailController extends BaseController {
     _requestTrackDaily();
   }
 
-  @override
-  void onReady() {
-    super.onReady();
-
-    // TrackDailyReportDialog.show(confirmOnTap: () {
-    //
-    // });
-  }
-
   void _requestTrackDaily() {
     _isRequested.value = false;
     CustomLoadingDialog.show(loadingTxt: StringName.trackLoadingTxt);

+ 161 - 0
lib/module/track/track_dialog/track_choose_friend_dialog.dart

@@ -0,0 +1,161 @@
+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/module/track/track_dialog/track_choose_friend_item.dart';
+import 'package:location/resource/string.gen.dart';
+import 'package:location/utils/common_expand.dart';
+
+import '../../../data/bean/track_daily_dialogs_info.dart';
+import '../../../resource/assets.gen.dart';
+import '../../../resource/colors.gen.dart';
+
+
+class TrackChooseFriendDialog {
+  static const String _tag = 'TrackChooseFriendDialog';
+
+  static void show({List<TrackDailyDialogsInfo>? trackDailyList,SelectAcceptCallback? onSelectItem}) {
+    SmartDialog.show(
+        builder: (_) => TrackChooseFriendView(confirmOnTap: () {},trackDailyList: trackDailyList,onSelectItem: onSelectItem,),
+        tag: _tag,
+        clickMaskDismiss: false);
+  }
+
+  static void dismiss() {
+    SmartDialog.dismiss(tag: _tag);
+  }
+}
+
+class TrackChooseFriendView extends StatefulWidget {
+  final VoidCallback? cancelOnTap;
+  final VoidCallback? confirmOnTap;
+  final List<TrackDailyDialogsInfo>? trackDailyList;
+  final SelectAcceptCallback? onSelectItem;
+
+  const TrackChooseFriendView({
+    super.key,
+    this.cancelOnTap,
+    required this.confirmOnTap,
+    this.trackDailyList,
+    this.onSelectItem
+  });
+
+  @override
+  State<TrackChooseFriendView> createState() => _TrackChooseFriendViewState();
+}
+
+
+class _TrackChooseFriendViewState extends State<TrackChooseFriendView> {
+
+  TrackDailyDialogsInfo selectDailyDialogsInfo = TrackDailyDialogsInfo();
+
+  @override
+  void initState() {
+    // TODO: implement initState
+    super.initState();
+    if ((widget.trackDailyList ?? []).isNotEmpty) {
+      selectDailyDialogsInfo = (widget.trackDailyList ?? []).first;
+    }
+  }
+
+  @override
+  Widget build(BuildContext context) {
+    return Container(
+      width: 274.w,
+      decoration: BoxDecoration(
+        borderRadius: BorderRadius.circular(16),
+        border: Border.all(color: Colors.white, width: 3),
+        gradient: LinearGradient(
+          begin: Alignment.topCenter,
+          end: Alignment.bottomCenter,
+          colors: [
+            Color(0xFFE4E4FF), // 对应 #E4E4FF
+            Colors.white,     // 对应 #FFF
+          ],
+          stops: [0.0, 0.1932], // 对应 0% 和 19.32%
+        ),
+      ),
+      child: Stack(
+        alignment: Alignment.center,
+        children: [
+          Positioned(
+              top: 16.w,
+              right: 16.w,
+              child: GestureDetector(
+                onTap: onCloseClick,
+                child: Assets.images.iconDialogClose2
+                    .image(width: 20.w, height: 20.w),
+              )),
+          buildAccountReplaceContent(),
+        ],
+      ),
+    );
+  }
+
+  Widget buildAccountReplaceContent() {
+    return Container(
+      padding: EdgeInsets.symmetric(horizontal: 20.w),
+      child: IntrinsicHeight(
+        child: Column(
+          children: [
+            SizedBox(height: 24.w),
+            Container(
+              alignment: Alignment.centerLeft,
+              width: double.infinity,
+              child: Text("选择任意好友",
+                  style: TextStyle(fontSize: 17.sp, color: '#333333'.color,fontWeight: FontWeight.bold)),
+            ),
+            SizedBox(height: 20.w),
+            Container(
+              height: 231.w,
+              child: _buildFriendList(),
+            ),
+            GestureDetector(
+              onTap: onKnowClick,
+              child: Container(
+                width: 229.w,
+                height: 43.w,
+                decoration: BoxDecoration(
+                  color: ColorName.colorPrimary,
+                  borderRadius: BorderRadius.circular(100.r),
+                ),
+                child: Center(
+                  child: Text("立即查看",
+                      style: TextStyle(
+                          fontSize: 14.sp,
+                          color: Colors.white,
+                          fontWeight: FontWeight.w500)),
+                ),
+              ),
+            ),
+            SizedBox(height: 16.w),
+          ],
+        ),
+      ),
+    );
+  }
+
+  Widget _buildFriendList() {
+    return ListView.builder(
+        padding: EdgeInsets.only(top: 0, bottom: 100.w),
+        itemBuilder: (_, index) {
+          TrackDailyDialogsInfo itemInfo = (widget.trackDailyList ?? [])[index];
+
+          return createUserItem(itemInfo,itemInfo.friendId == selectDailyDialogsInfo.friendId, onSelectItem: (selectInfo) {
+            selectDailyDialogsInfo = selectInfo;
+            setState(() {
+            });
+          });
+        },
+        itemCount: (widget.trackDailyList ?? []).length);
+  }
+
+  void onCloseClick() {
+    TrackChooseFriendDialog.dismiss();
+  }
+
+  void onKnowClick() {
+    widget.onSelectItem!(selectDailyDialogsInfo);
+    TrackChooseFriendDialog.dismiss();
+  }
+}

+ 55 - 0
lib/module/track/track_dialog/track_choose_friend_item.dart

@@ -0,0 +1,55 @@
+
+import 'dart:ui';
+
+import 'package:cached_network_image/cached_network_image.dart';
+import 'package:flutter/cupertino.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter_screenutil/flutter_screenutil.dart';
+import 'package:location/resource/colors.gen.dart';
+import 'package:location/utils/common_expand.dart';
+
+import '../../../data/bean/track_daily_dialogs_info.dart';
+
+
+typedef SelectAcceptCallback = void Function(TrackDailyDialogsInfo itemInfo);
+
+Widget createUserItem(TrackDailyDialogsInfo itemInfo,bool isSelect,{required SelectAcceptCallback onSelectItem}) {
+  return GestureDetector(
+    onTap: () {
+      onSelectItem(itemInfo);
+    },
+    child: Container(
+      decoration: isSelect ?  BoxDecoration(
+        color: "#EAEAFF".color,
+        borderRadius: BorderRadius.circular(10.w),
+        border: Border.all(color: "#EAEAFF".color, width: 1.w),
+      ) : BoxDecoration(
+        color: ColorName.white,
+        borderRadius: BorderRadius.circular(10.w),
+        border: Border.all(color: Color(0xFFE3E3FF), width: 1.w),
+      ),
+      margin: EdgeInsets.only(bottom: 8.w),
+      padding: EdgeInsets.symmetric(horizontal: 8.w, vertical: 8.w),
+      child: Row(
+        children: [
+          ClipOval(
+            child: Container(
+              width: 40.w,
+              height: 40.w,
+              child: CachedNetworkImage(imageUrl: itemInfo.avatar ?? "", fit: BoxFit.cover),
+            ),
+          ),
+          SizedBox(width: 8.w),
+          Expanded(
+            child: Text(
+                (itemInfo.name ?? "").length > 11 ? '${(itemInfo.name ?? "").substring(0,11)}...' : (itemInfo.name ?? itemInfo.phone ?? ""),
+                style: TextStyle(
+                    fontSize: 12.sp,
+                    color: "#333333".color,
+                    fontWeight: FontWeight.bold)),
+          ),
+        ],
+      ),
+    ),
+  );
+}

+ 30 - 12
lib/module/track/track_dialog/track_daily_report_dialog.dart

@@ -8,13 +8,17 @@ import 'package:location/module/track/track_dialog/track_overlapping_avatars.dar
 import 'package:location/resource/colors.gen.dart';
 import 'package:location/utils/common_expand.dart';
 
+import '../../../data/bean/track_daily_dialogs_info.dart';
 import '../../../resource/assets.gen.dart';
 
 class TrackDailyReportDialog {
   static void show({
     VoidCallback? cancelOnTap,
-    VoidCallback? confirmOnTap,}) {
+    VoidCallback? confirmOnTap,
+    List<TrackDailyDialogsInfo>? trackDailyList,
+  }) {
     Get.dialog(
+        barrierDismissible: false,
         SimpleDialog(
           titlePadding: EdgeInsets.zero,
           contentPadding: EdgeInsets.zero,
@@ -26,7 +30,9 @@ class TrackDailyReportDialog {
                   Get.back();
                   cancelOnTap!();
                 },
-                confirmOnTap: confirmOnTap)
+                confirmOnTap: confirmOnTap,
+              trackDailyList: trackDailyList,
+            )
           ],
         )
     );
@@ -36,12 +42,14 @@ class TrackDailyReportDialog {
 class TrackDailyReportTipView extends StatefulWidget {
   final VoidCallback? cancelOnTap;
   final VoidCallback? confirmOnTap;
+  final List<TrackDailyDialogsInfo>? trackDailyList;
 
 
   const TrackDailyReportTipView({
     super.key,
     this.cancelOnTap,
     required this.confirmOnTap,
+    this.trackDailyList,
   });
 
   @override
@@ -50,15 +58,25 @@ class TrackDailyReportTipView extends StatefulWidget {
 
 class _TrackDailyReportTipViewState extends State<TrackDailyReportTipView> {
 
-  final List<String> avatarUrls = [
-    'https://picsum.photos/seed/avatar1/200/200',
-    'https://picsum.photos/seed/avatar2/200/200',
-    'https://picsum.photos/seed/avatar3/200/200',
-    'https://picsum.photos/seed/avatar4/200/200',
-    'https://picsum.photos/seed/avatar5/200/200',
-    'https://picsum.photos/seed/avatar5/200/200',
-    'https://picsum.photos/seed/avatar5/200/200',
-  ];
+  late List<String> avatarUrls = [];
+
+  @override
+  void initState() {
+    super.initState();
+    print("widget.trackDailyListfsdfsdf---${widget.trackDailyList}");
+    avatarUrls = extractUrls(widget.trackDailyList);//widget.trackDailyList!.map((item) => item.avatar ?? "").whereType<String>().toList();
+  }
+
+  List<String> extractUrls(List<TrackDailyDialogsInfo>? trackDailyList) {
+    // 若列表为 null,则返回空列表
+    if (trackDailyList == null) return [];
+
+    // 使用 map 操作提取 url 字段,并过滤掉可能的 null 值
+    return trackDailyList
+        .map((item) => item.avatar) // 假设 TrackDailyDialogsInfo 类中有 url 字段
+        .whereType<String>()     // 过滤掉可能的 null 值
+        .toList();
+  }
 
   //计算出头像总共的宽度
   double _calculateTheTotalWithAvatar(List<String> avatarUrls) {
@@ -66,7 +84,7 @@ class _TrackDailyReportTipViewState extends State<TrackDailyReportTipView> {
     if (avatarUrls.length > 5) {
       resultTotalW = (avatarUrls.length - 1) * 29.w + 9.w;
     } else if (avatarUrls.length > 1) {
-      resultTotalW = (avatarUrls.length - 1) * 29.w + 9.w;
+      resultTotalW = (avatarUrls.length) * 29.w + 9.w;
     }
     return resultTotalW;
   }

+ 20 - 0
lib/push_notification/ios_push_notification_service.dart

@@ -4,6 +4,11 @@ import 'package:flutter/services.dart';
 import 'package:get/get.dart';
 import 'package:get/get_core/src/get_main.dart';
 
+import '../data/repositories/track_repository.dart';
+import '../handler/error_handler.dart';
+import '../module/track/track_dialog/track_choose_friend_dialog.dart';
+import '../module/track/track_dialog/track_daily_report_dialog.dart';
+
 
 class IosPushNotificationService {
   static const MethodChannel _channel = MethodChannel('com.example.app/push_notification');
@@ -70,6 +75,21 @@ class IosPushNotificationService {
   ///处理推送各种点击 skipType 0-首页 1-好友申请页面 2-好友消息页面
   static void handleNotificationPushChick(Map<String,dynamic> pushDict) {
     int skipType = pushDict["skipType"];
+    TrackRepository trackRepository = TrackRepository.getInstance();
+    trackRepository.locationTrackDailyDialogs().then((trackResponse) {
+      if ((trackResponse.trackDailyList ?? []).isNotEmpty) {
+         if ((trackResponse.trackDailyList ?? []).length == 1) {
+
+         } else {
+           TrackChooseFriendDialog.show(trackDailyList: trackResponse.trackDailyList,onSelectItem: (selectInfo) {
+
+           });
+         }
+      }
+    }).catchError((error) {
+      ErrorHandler.toastError(error);
+    });
+
     // skipType = 0;
     // if (skipType == 0) {
     //   Get.until((route) => route.isFirst);