fix fan/follow params

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-11-07 19:40:32 +08:00
parent 3d1199363b
commit d5bb4bc149
12 changed files with 94 additions and 30 deletions

View File

@@ -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();

View File

@@ -20,13 +20,26 @@ class FansPage extends StatefulWidget {
@override
State<FansPage> 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<FansPage> {
@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;

View File

@@ -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<FollowChildPage>
),
),
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,
),

View File

@@ -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();

View File

@@ -17,6 +17,17 @@ class FollowPage extends StatefulWidget {
@override
State<FollowPage> 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<FollowPage> {

View File

@@ -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();

View File

@@ -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<FollowSamePage> 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<FollowSamePage> {
@override
final controller = Get.putOrFind(
FollowSameController.new,
tag: Get.parameters['mid'],
tag: Get.arguments?['mid']?.toString() ?? Utils.generateRandomString(8),
);
@override

View File

@@ -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<FollowedPage> 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<FollowedPage> {
@override
final controller = Get.putOrFind(
FollowedController.new,
tag: Get.parameters['mid'],
tag: Get.arguments?['mid']?.toString() ?? Utils.generateRandomString(8),
);
@override

View File

@@ -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,
);
}

View File

@@ -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<HorizontalMemberPage> {
: '',
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,
);
}
},