From 0fac8844dc37129378dc443b7dbe1c6560cd31d7 Mon Sep 17 00:00:00 2001 From: zengyi Date: Wed, 24 Sep 2025 14:43:07 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E5=88=87=E6=8D=A2=E6=92=AD=E6=94=BE?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/kt_pages/kt_explore/view.dart | 2 + lib/kt_pages/kt_main_page/view.dart | 350 ++++++++++++++-------------- 2 files changed, 180 insertions(+), 172 deletions(-) diff --git a/lib/kt_pages/kt_explore/view.dart b/lib/kt_pages/kt_explore/view.dart index 4c12974..45c9725 100644 --- a/lib/kt_pages/kt_explore/view.dart +++ b/lib/kt_pages/kt_explore/view.dart @@ -1,5 +1,6 @@ import 'package:easy_refresh/easy_refresh.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_kinetra/kt_pages/kt_main_page/view.dart'; import 'package:flutter_kinetra/kt_utils/kt_string_extend.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; @@ -28,6 +29,7 @@ class _KtExplorePageState extends State super.build(context); return GetBuilder( builder: (ctrl) { + if(Get.find().curIndex != 1) return Container(); if (state.loadStatus == KtLoadStatusType.loadNoData || state.loadStatus == KtLoadStatusType.loadFailed) { return KtStatusWidget( diff --git a/lib/kt_pages/kt_main_page/view.dart b/lib/kt_pages/kt_main_page/view.dart index 86ab3d6..5fcfd71 100644 --- a/lib/kt_pages/kt_main_page/view.dart +++ b/lib/kt_pages/kt_main_page/view.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_kinetra/kt_pages/kt_actor/kt_actor_page.dart'; +import 'package:flutter_kinetra/kt_pages/kt_explore/logic.dart'; import 'package:flutter_kinetra/kt_utils/kt_string_extend.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; @@ -20,7 +21,7 @@ class KtMainPage extends StatefulWidget { class _KtMainPageState extends State with RouteAware, WidgetsBindingObserver { - final logic = Get.put(KtMainLogic()); + final logic = Get.put(KtMainLogic()); final PageController _controller = PageController(); static const List _tabsTitle = [ {'icon': 'home', 'title': 'Home'}, @@ -110,12 +111,17 @@ class _KtMainPageState extends State _currentIndex = index; logic.curIndex = index; _controller.jumpToPage(index); - final myListLogic = Get.put(MyListLogic()); - myListLogic.initData(); + if (index == 3) { + final myListLogic = Get.put(MyListLogic()); + myListLogic.initData(); + } else if (index == 1) { + final exploreLogic = Get.put(KtExploreLogic()); + exploreLogic.update(); + } }, items: [ ..._tabsTitle.map( - (item) => BottomNavigationBarItem( + (item) => BottomNavigationBarItem( icon: Container( height: 24.w, margin: EdgeInsets.only(top: 4.w), @@ -139,7 +145,7 @@ class _KtMainPageState extends State ], ), ); - } + }, ), ); } @@ -171,174 +177,174 @@ class _KtMainPageState extends State super.dispose(); } -// @override -// void didChangeAppLifecycleState(AppLifecycleState state) { -// super.didChangeAppLifecycleState(state); -// if (state == AppLifecycleState.paused) { -// _cycleLifeTime = DateTime.now(); -// } else if (state == AppLifecycleState.resumed) { -// AppBadgePlus.updateBadge(0); -// final now = DateTime.now(); -// final duration = now.difference(_cycleLifeTime ?? now); -// if ((duration.inMilliseconds > 3 || _isAndroidTwicePermission) && _pageOpen) { -// Future.delayed(const Duration(milliseconds: 1000)).then((_) { -// if (mounted) _checkDeeplink(); -// }); -// } -// _cycleLifeTime = null; -// } -// } -// -// void _checkDeeplink() { -// EasyThrottle.throttle('check-deeplink', Duration(seconds: 2), () async { -// try { -// // 获取deepling链接 -// // final adjustProvider = context.read(); -// final deepLink = AdjustService().deeplink ?? ''; -// debugPrint('[CheckDeeplink] DEEPLINK链接: $deepLink'); -// // 使用的原始链接和使用链接 -// String useString = ''; -// String useStr = ''; -// //优先使用直链 -// if (deepLink != '') { -// useString = deepLink; -// useStr = deepLink; -// // 清空deeplink -// AdjustService().clearDeeplink(); -// debugPrint('----清理deeplink:${AdjustService().deeplink}'); -// } else { -// // 获取剪贴板内容 -// final clipboardData = await Clipboard.getData(Clipboard.kTextPlain); -// final clipboardString = clipboardData?.text ?? ''; -// debugPrint('[CheckDeeplink] 剪贴板原始链接: $clipboardString'); -// // 判断剪贴板内容是否为跳转链接并处理 -// final clipboardStr = -// clipboardString != '' && -// clipboardString.startsWith(Apis.W2A_PREFIX) && -// clipboardString.contains(Apis.W2A_NAME) -// ? clipboardString.substring(Apis.W2A_PREFIX.length).trim() -// : ''; -// debugPrint('[CheckDeeplink] 剪贴板处理链接: $clipboardStr'); -// useString = clipboardString; -// useStr = clipboardStr; -// } -// -// // 使用链接 -// if (useStr != '') { -// final uri = Uri.tryParse(useStr); -// Map params = uri!.queryParameters; -// // params.forEach((k, v) { -// // debugPrint('----key:$k value:$v'); -// // }); -// -// final shortPlayId = params['short_play_id']; -// final videoId = params['video_id'] ?? 0; -// if (shortPlayId?.isEmpty ?? false) { -// debugPrint('[CheckDeeplink] 链接中没有参数'); -// return; -// } -// // 上报w2a -// HttpClient().request(Apis.uploadW2a, data: {"data": useString}); -// debugPrint('[CheckDeeplink] 跳转链接: $useStr'); -// debugPrint('[CheckDeeplink] 上报链接: $useString'); -// debugPrint('---current route:${Get.currentRoute}'); -// AdjustService().clearDeeplink(); -// // 清空剪贴板 -// await Clipboard.setData(const ClipboardData(text: '')); -// if (Get.currentRoute == AppRoutes.shortVideo) { -// // Get.offAndToNamed( -// // AppRoutes.shortVideo, -// // arguments: {'shortPlayId': int.parse(shortPlayId), "videoId": int.parse(videoId)}, -// // ); -// final logic = Get.put(ShortVideoLogic()); -// logic.state.shortPlayId = int.parse(shortPlayId); -// logic.state.videoId = int.parse(videoId); -// logic.initData(); -// } else { -// Get.toNamed( -// AppRoutes.shortVideo, -// arguments: {'shortPlayId': int.parse(shortPlayId.toString()), "videoId": int.parse(videoId.toString())}, -// ); -// } -// } -// } catch (e) { -// debugPrint('[AdjustManager] 读取剪贴板异常: $e'); -// } -// }); -// } -// -// _initFirebase() async { -// try { -// await Firebase.initializeApp(); -// } catch (e) { -// debugPrint("----initFirebase err: $e"); -// } -// if (Platform.isIOS) { -// await FirebaseIOS().initialize(); -// } else if (Platform.isAndroid) { -// await FirebaseAndroid().initialize(); -// await FirebaseAndroid().initializeNotifications(); -// } -// // 获取初始消息(应用通过通知启动)看是否是应用消息启动 -// if (Platform.isIOS) { -// WidgetsBinding.instance.addPostFrameCallback((timeStamp) async { -// // 看是否是消息跳进来,然后跳转到详情页面 -// RemoteMessage? remoteMessage = await FirebaseMessaging.instance.getInitialMessage(); -// debugPrint("杀死app启动通知:$remoteMessage"); -// if (remoteMessage != null) { -// final msgData = remoteMessage.data as Map; -// final msgNotification = remoteMessage.notification; -// final String? msgId = msgData['msg_id']; -// final String title = msgNotification?.title ?? ""; -// if (msgId != null) { -// HttpClient().request(Apis.sendMessageReport, data: {"message_id": int.parse(msgId), "title": title}); -// } -// FirebaseCommon().onFirebaseRoute(msgData); -// } -// }); -// } -// } -// -// // 检查通知权限 -// Future _checkNotificationPermission() async { -// final permissionStatus = await Permission.notification.status; -// if (permissionStatus.isDenied) { -// if (Platform.isAndroid) { -// //安卓第二次请求权限,再次查询剪贴板的w2a链接 -// _isAndroidTwicePermission = true; -// } -// //再次请求 -// await Permission.notification.request(); -// } else if (permissionStatus.isPermanentlyDenied) { -// int now = DateTime.now().millisecondsSinceEpoch; -// int lastRequestTime = SpUtils().getInt(SpKeys.notiPermissionTime) ?? now; -// int hours = DateTime.now().difference(DateTime.fromMillisecondsSinceEpoch(lastRequestTime)).inHours; -// if (hours < 24) return; -// SpUtils().setInt(SpKeys.notiPermissionTime, now); -// //永久拒绝 -// Get.dialog( -// CommonDialog( -// topIconWidget: Positioned( -// left: -35.w, -// top: 0.w, -// child: Image.asset('ic_dialog_subscribe.png'.icon, width: 140.w, height: 100.w), -// ), -// title: 'Turn on Notifications?', -// subTitle: 'Get alerts for new episodes and exclusive offers.', -// hasLeftBtn: false, -// rightBtnText: 'Allow', -// rightBtnFunc: () => openAppSettings(), -// ), -// ); -// } -// } -// -// _restore() async { -// await Get.put(MineLogic()).getUserInfo(); -// EasyThrottle.throttle('restore', Duration(minutes: 5), () => BuyUtils.restorePay(showTips: false)); -// } + // @override + // void didChangeAppLifecycleState(AppLifecycleState state) { + // super.didChangeAppLifecycleState(state); + // if (state == AppLifecycleState.paused) { + // _cycleLifeTime = DateTime.now(); + // } else if (state == AppLifecycleState.resumed) { + // AppBadgePlus.updateBadge(0); + // final now = DateTime.now(); + // final duration = now.difference(_cycleLifeTime ?? now); + // if ((duration.inMilliseconds > 3 || _isAndroidTwicePermission) && _pageOpen) { + // Future.delayed(const Duration(milliseconds: 1000)).then((_) { + // if (mounted) _checkDeeplink(); + // }); + // } + // _cycleLifeTime = null; + // } + // } + // + // void _checkDeeplink() { + // EasyThrottle.throttle('check-deeplink', Duration(seconds: 2), () async { + // try { + // // 获取deepling链接 + // // final adjustProvider = context.read(); + // final deepLink = AdjustService().deeplink ?? ''; + // debugPrint('[CheckDeeplink] DEEPLINK链接: $deepLink'); + // // 使用的原始链接和使用链接 + // String useString = ''; + // String useStr = ''; + // //优先使用直链 + // if (deepLink != '') { + // useString = deepLink; + // useStr = deepLink; + // // 清空deeplink + // AdjustService().clearDeeplink(); + // debugPrint('----清理deeplink:${AdjustService().deeplink}'); + // } else { + // // 获取剪贴板内容 + // final clipboardData = await Clipboard.getData(Clipboard.kTextPlain); + // final clipboardString = clipboardData?.text ?? ''; + // debugPrint('[CheckDeeplink] 剪贴板原始链接: $clipboardString'); + // // 判断剪贴板内容是否为跳转链接并处理 + // final clipboardStr = + // clipboardString != '' && + // clipboardString.startsWith(Apis.W2A_PREFIX) && + // clipboardString.contains(Apis.W2A_NAME) + // ? clipboardString.substring(Apis.W2A_PREFIX.length).trim() + // : ''; + // debugPrint('[CheckDeeplink] 剪贴板处理链接: $clipboardStr'); + // useString = clipboardString; + // useStr = clipboardStr; + // } + // + // // 使用链接 + // if (useStr != '') { + // final uri = Uri.tryParse(useStr); + // Map params = uri!.queryParameters; + // // params.forEach((k, v) { + // // debugPrint('----key:$k value:$v'); + // // }); + // + // final shortPlayId = params['short_play_id']; + // final videoId = params['video_id'] ?? 0; + // if (shortPlayId?.isEmpty ?? false) { + // debugPrint('[CheckDeeplink] 链接中没有参数'); + // return; + // } + // // 上报w2a + // HttpClient().request(Apis.uploadW2a, data: {"data": useString}); + // debugPrint('[CheckDeeplink] 跳转链接: $useStr'); + // debugPrint('[CheckDeeplink] 上报链接: $useString'); + // debugPrint('---current route:${Get.currentRoute}'); + // AdjustService().clearDeeplink(); + // // 清空剪贴板 + // await Clipboard.setData(const ClipboardData(text: '')); + // if (Get.currentRoute == AppRoutes.shortVideo) { + // // Get.offAndToNamed( + // // AppRoutes.shortVideo, + // // arguments: {'shortPlayId': int.parse(shortPlayId), "videoId": int.parse(videoId)}, + // // ); + // final logic = Get.put(ShortVideoLogic()); + // logic.state.shortPlayId = int.parse(shortPlayId); + // logic.state.videoId = int.parse(videoId); + // logic.initData(); + // } else { + // Get.toNamed( + // AppRoutes.shortVideo, + // arguments: {'shortPlayId': int.parse(shortPlayId.toString()), "videoId": int.parse(videoId.toString())}, + // ); + // } + // } + // } catch (e) { + // debugPrint('[AdjustManager] 读取剪贴板异常: $e'); + // } + // }); + // } + // + // _initFirebase() async { + // try { + // await Firebase.initializeApp(); + // } catch (e) { + // debugPrint("----initFirebase err: $e"); + // } + // if (Platform.isIOS) { + // await FirebaseIOS().initialize(); + // } else if (Platform.isAndroid) { + // await FirebaseAndroid().initialize(); + // await FirebaseAndroid().initializeNotifications(); + // } + // // 获取初始消息(应用通过通知启动)看是否是应用消息启动 + // if (Platform.isIOS) { + // WidgetsBinding.instance.addPostFrameCallback((timeStamp) async { + // // 看是否是消息跳进来,然后跳转到详情页面 + // RemoteMessage? remoteMessage = await FirebaseMessaging.instance.getInitialMessage(); + // debugPrint("杀死app启动通知:$remoteMessage"); + // if (remoteMessage != null) { + // final msgData = remoteMessage.data as Map; + // final msgNotification = remoteMessage.notification; + // final String? msgId = msgData['msg_id']; + // final String title = msgNotification?.title ?? ""; + // if (msgId != null) { + // HttpClient().request(Apis.sendMessageReport, data: {"message_id": int.parse(msgId), "title": title}); + // } + // FirebaseCommon().onFirebaseRoute(msgData); + // } + // }); + // } + // } + // + // // 检查通知权限 + // Future _checkNotificationPermission() async { + // final permissionStatus = await Permission.notification.status; + // if (permissionStatus.isDenied) { + // if (Platform.isAndroid) { + // //安卓第二次请求权限,再次查询剪贴板的w2a链接 + // _isAndroidTwicePermission = true; + // } + // //再次请求 + // await Permission.notification.request(); + // } else if (permissionStatus.isPermanentlyDenied) { + // int now = DateTime.now().millisecondsSinceEpoch; + // int lastRequestTime = SpUtils().getInt(SpKeys.notiPermissionTime) ?? now; + // int hours = DateTime.now().difference(DateTime.fromMillisecondsSinceEpoch(lastRequestTime)).inHours; + // if (hours < 24) return; + // SpUtils().setInt(SpKeys.notiPermissionTime, now); + // //永久拒绝 + // Get.dialog( + // CommonDialog( + // topIconWidget: Positioned( + // left: -35.w, + // top: 0.w, + // child: Image.asset('ic_dialog_subscribe.png'.icon, width: 140.w, height: 100.w), + // ), + // title: 'Turn on Notifications?', + // subTitle: 'Get alerts for new episodes and exclusive offers.', + // hasLeftBtn: false, + // rightBtnText: 'Allow', + // rightBtnFunc: () => openAppSettings(), + // ), + // ); + // } + // } + // + // _restore() async { + // await Get.put(MineLogic()).getUserInfo(); + // EasyThrottle.throttle('restore', Duration(minutes: 5), () => BuyUtils.restorePay(showTips: false)); + // } } -class KtMainLogic extends GetxController{ +class KtMainLogic extends GetxController { int curIndex = 0; }