diff --git a/lib/pages/fan/controller.dart b/lib/pages/fan/controller.dart index 8c6d1a318..41ce87d80 100644 --- a/lib/pages/fan/controller.dart +++ b/lib/pages/fan/controller.dart @@ -14,12 +14,13 @@ class FansController extends FollowTypeController { @override void init() { + final Map? args = Get.arguments; final ownerMid = Accounts.main.mid; - final mid = Get.parameters['mid']; - this.mid = mid != null ? int.parse(mid) : ownerMid; + final int? mid = args?['mid']; + this.mid = mid ?? ownerMid; isOwner = ownerMid == this.mid; if (showName && !isOwner) { - final name = Get.parameters['name']; + final String? name = args?['name']; this.name = RxnString(name); if (name == null) { queryUserName(); diff --git a/lib/pages/fan/view.dart b/lib/pages/fan/view.dart index 5f4b3dbd1..19c51e477 100644 --- a/lib/pages/fan/view.dart +++ b/lib/pages/fan/view.dart @@ -20,13 +20,26 @@ class FansPage extends StatefulWidget { @override State createState() => _FansPageState(); + + static void toFansPage({dynamic mid, String? name}) { + if (mid == null) { + return; + } + Get.toNamed( + '/fan', + arguments: { + 'mid': Utils.safeToInt(mid), + 'name': name, + }, + ); + } } class _FansPageState extends FollowTypePageState { @override late final FansController controller = Get.put( FansController(widget.showName), - tag: Get.parameters['mid'], + tag: Get.arguments?['mid']?.toString() ?? Utils.generateRandomString(8), ); late final flag = widget.onSelect == null && controller.isOwner; diff --git a/lib/pages/follow/child/child_view.dart b/lib/pages/follow/child/child_view.dart index 3008f63f5..7efce4b05 100644 --- a/lib/pages/follow/child/child_view.dart +++ b/lib/pages/follow/child/child_view.dart @@ -8,6 +8,7 @@ import 'package:PiliPlus/models_new/follow/list.dart'; import 'package:PiliPlus/pages/follow/child/child_controller.dart'; import 'package:PiliPlus/pages/follow/controller.dart'; import 'package:PiliPlus/pages/follow/widgets/follow_item.dart'; +import 'package:PiliPlus/pages/follow_type/follow_same/view.dart'; import 'package:PiliPlus/pages/share/view.dart' show UserModel; import 'package:PiliPlus/utils/utils.dart'; import 'package:flutter/material.dart'; @@ -164,8 +165,9 @@ class _FollowChildPageState extends State ), ), moreTextButton( - onTap: () => Get.toNamed( - '/sameFollowing?mid=${_followController.mid}&name=${widget.controller?.name.value}', + onTap: () => FollowSamePage.toFollowSamePage( + mid: _followController.mid, + name: widget.controller?.name.value, ), color: colorScheme.outline, ), diff --git a/lib/pages/follow/controller.dart b/lib/pages/follow/controller.dart index 504d7b54e..e8e3d25f3 100644 --- a/lib/pages/follow/controller.dart +++ b/lib/pages/follow/controller.dart @@ -18,14 +18,15 @@ class FollowController extends GetxController with GetTickerProviderStateMixin { @override void onInit() { super.onInit(); + final Map? args = Get.arguments; final ownerMid = Accounts.main.mid; - final mid = Get.parameters['mid']; - this.mid = mid != null ? int.parse(mid) : ownerMid; + final int? mid = args?['mid']; + this.mid = mid ?? ownerMid; isOwner = ownerMid == this.mid; if (isOwner) { queryFollowUpTags(); } else { - final name = Get.parameters['name']; + final String? name = args?['name']; this.name = RxnString(name); if (name == null) { _queryUserName(); diff --git a/lib/pages/follow/view.dart b/lib/pages/follow/view.dart index 4e6061420..5e33fca98 100644 --- a/lib/pages/follow/view.dart +++ b/lib/pages/follow/view.dart @@ -17,6 +17,17 @@ class FollowPage extends StatefulWidget { @override State createState() => _FollowPageState(); + + static void toFollowPage({dynamic mid, String? name}) { + if (mid == null) return; + Get.toNamed( + '/follow', + arguments: { + 'mid': Utils.safeToInt(mid), + 'name': name, + }, + ); + } } class _FollowPageState extends State { diff --git a/lib/pages/follow_type/controller.dart b/lib/pages/follow_type/controller.dart index cc7811441..c9e68bbc5 100644 --- a/lib/pages/follow_type/controller.dart +++ b/lib/pages/follow_type/controller.dart @@ -20,9 +20,9 @@ abstract class FollowTypeController void init() { final ownerMid = Accounts.main.mid; - final mid = Get.parameters['mid']; - this.mid = mid != null ? int.parse(mid) : ownerMid; - final name = Get.parameters['name']; + final Map? args = Get.arguments; + mid = args?['mid'] ?? ownerMid; + final String? name = args?['name']; this.name = RxnString(name); if (name == null) { queryUserName(); diff --git a/lib/pages/follow_type/follow_same/view.dart b/lib/pages/follow_type/follow_same/view.dart index bc6b9c5ad..489e3af1a 100644 --- a/lib/pages/follow_type/follow_same/view.dart +++ b/lib/pages/follow_type/follow_same/view.dart @@ -1,6 +1,7 @@ import 'package:PiliPlus/pages/follow_type/follow_same/controller.dart'; import 'package:PiliPlus/pages/follow_type/view.dart'; import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/utils.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; @@ -9,13 +10,24 @@ class FollowSamePage extends StatefulWidget { @override State createState() => _FollowSamePageState(); + + static void toFollowSamePage({dynamic mid, String? name}) { + if (mid == null) return; + Get.toNamed( + '/sameFollowing', + arguments: { + 'mid': Utils.safeToInt(mid), + 'name': name, + }, + ); + } } class _FollowSamePageState extends FollowTypePageState { @override final controller = Get.putOrFind( FollowSameController.new, - tag: Get.parameters['mid'], + tag: Get.arguments?['mid']?.toString() ?? Utils.generateRandomString(8), ); @override diff --git a/lib/pages/follow_type/followed/view.dart b/lib/pages/follow_type/followed/view.dart index 68b9841f3..e6a6411d4 100644 --- a/lib/pages/follow_type/followed/view.dart +++ b/lib/pages/follow_type/followed/view.dart @@ -1,6 +1,7 @@ import 'package:PiliPlus/pages/follow_type/followed/controller.dart'; import 'package:PiliPlus/pages/follow_type/view.dart'; import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/utils.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; @@ -9,13 +10,24 @@ class FollowedPage extends StatefulWidget { @override State createState() => _FollowedPageState(); + + static void toFollowedPage({dynamic mid, String? name}) { + if (mid == null) return; + Get.toNamed( + '/followed', + arguments: { + 'mid': Utils.safeToInt(mid), + 'name': name, + }, + ); + } } class _FollowedPageState extends FollowTypePageState { @override final controller = Get.putOrFind( FollowedController.new, - tag: Get.parameters['mid'], + tag: Get.arguments?['mid']?.toString() ?? Utils.generateRandomString(8), ); @override diff --git a/lib/pages/member/widget/user_info_card.dart b/lib/pages/member/widget/user_info_card.dart index adb2324fc..1ee78d3eb 100644 --- a/lib/pages/member/widget/user_info_card.dart +++ b/lib/pages/member/widget/user_info_card.dart @@ -9,6 +9,9 @@ import 'package:PiliPlus/models_new/space/space/followings_followed_upper.dart'; import 'package:PiliPlus/models_new/space/space/images.dart'; import 'package:PiliPlus/models_new/space/space/live.dart'; import 'package:PiliPlus/models_new/space/space/pr_info.dart'; +import 'package:PiliPlus/pages/fan/view.dart'; +import 'package:PiliPlus/pages/follow/view.dart'; +import 'package:PiliPlus/pages/follow_type/followed/view.dart'; import 'package:PiliPlus/utils/accounts.dart'; import 'package:PiliPlus/utils/app_scheme.dart'; import 'package:PiliPlus/utils/context_ext.dart'; @@ -330,9 +333,9 @@ class UserInfoCard extends StatelessWidget { : card.likes?.likeNum, onTap: () { if (index == 0) { - Get.toNamed('/fan?mid=${card.mid}&name=${card.name}'); + FansPage.toFansPage(mid: card.mid, name: card.name); } else if (index == 2) { - Get.toNamed('/follow?mid=${card.mid}&name=${card.name}'); + FollowPage.toFollowPage(mid: card.mid, name: card.name); } }, ) @@ -653,7 +656,7 @@ class UserInfoCard extends StatelessWidget { ], ); return GestureDetector( - onTap: () => Get.toNamed('/followed?mid=${card.mid}&name=${card.name}'), + onTap: () => FollowedPage.toFollowedPage(mid: card.mid, name: card.name), child: child, ); } diff --git a/lib/pages/video/member/view.dart b/lib/pages/video/member/view.dart index c511bae4d..59cef2e7e 100644 --- a/lib/pages/video/member/view.dart +++ b/lib/pages/video/member/view.dart @@ -11,6 +11,8 @@ import 'package:PiliPlus/models/common/image_type.dart'; import 'package:PiliPlus/models/member/info.dart'; import 'package:PiliPlus/models_new/space/space_archive/item.dart'; import 'package:PiliPlus/models_new/video/video_detail/episode.dart'; +import 'package:PiliPlus/pages/fan/view.dart'; +import 'package:PiliPlus/pages/follow/view.dart'; import 'package:PiliPlus/pages/member_video/widgets/video_card_h_member_video.dart'; import 'package:PiliPlus/pages/video/controller.dart'; import 'package:PiliPlus/pages/video/introduction/ugc/controller.dart'; @@ -289,12 +291,14 @@ class _HorizontalMemberPageState extends State { : '', onTap: () { if (index == 0) { - Get.toNamed( - '/fan?mid=${widget.mid}&name=${memberInfoModel.name}', + FansPage.toFansPage( + mid: widget.mid, + name: memberInfoModel.name, ); } else if (index == 2) { - Get.toNamed( - '/follow?mid=${widget.mid}&name=${memberInfoModel.name}', + FollowPage.toFollowPage( + mid: widget.mid, + name: memberInfoModel.name, ); } }, diff --git a/lib/utils/app_scheme.dart b/lib/utils/app_scheme.dart index 209d83acb..94ab702d2 100644 --- a/lib/utils/app_scheme.dart +++ b/lib/utils/app_scheme.dart @@ -7,6 +7,9 @@ import 'package:PiliPlus/http/search.dart'; import 'package:PiliPlus/models/common/fav_type.dart'; import 'package:PiliPlus/models/common/video/source_type.dart'; import 'package:PiliPlus/pages/audio/view.dart'; +import 'package:PiliPlus/pages/fan/view.dart'; +import 'package:PiliPlus/pages/follow/view.dart'; +import 'package:PiliPlus/pages/follow_type/followed/view.dart'; import 'package:PiliPlus/pages/live/view.dart'; import 'package:PiliPlus/pages/rank/view.dart'; import 'package:PiliPlus/pages/subscription_detail/view.dart'; @@ -486,13 +489,13 @@ abstract final class PiliScheme { }) { switch (type) { case 'follow': - Get.toNamed('/follow?mid=$mid'); + FollowPage.toFollowPage(mid: mid); break; case 'fans': - Get.toNamed('/fan?mid=$mid'); + FansPage.toFansPage(mid: mid); break; case 'followed': - Get.toNamed('/followed?mid=$mid'); + FollowedPage.toFollowedPage(mid: mid); break; default: PageUtils.toDupNamed('/member?mid=$mid', off: off); diff --git a/lib/utils/login_utils.dart b/lib/utils/login_utils.dart index b3b53ab39..041a4bb55 100644 --- a/lib/utils/login_utils.dart +++ b/lib/utils/login_utils.dart @@ -92,15 +92,17 @@ abstract class LoginUtils { } catch (_) {} try { - Get.find( - tag: HomeTabType.bangumi.name, - ).queryPgcFollow(); + Get.find(tag: HomeTabType.bangumi.name) + ..followPage = 1 + ..followEnd = false + ..queryPgcFollow(); } catch (_) {} try { - Get.find( - tag: HomeTabType.cinema.name, - ).queryPgcFollow(); + Get.find(tag: HomeTabType.cinema.name) + ..followPage = 1 + ..followEnd = false + ..queryPgcFollow(); } catch (_) {} } } else {