diff --git a/lib/pages/member/archive/controller.dart b/lib/pages/member/archive/controller.dart index 9a15d4fc..3fc90328 100644 --- a/lib/pages/member/archive/controller.dart +++ b/lib/pages/member/archive/controller.dart @@ -2,6 +2,7 @@ import 'package:get/get.dart'; import 'package:pilipala/http/member.dart'; class ArchiveController extends GetxController { + ArchiveController(this.mid); int? mid; int pn = 1; int count = 0; @@ -15,7 +16,8 @@ class ArchiveController extends GetxController { @override void onInit() { super.onInit(); - mid = int.parse(Get.parameters['mid']!); + mid ??= int.parse(Get.parameters['mid']!); + print('🐶🐶: $mid'); currentOrder.value = orderList.first; } diff --git a/lib/pages/member/archive/view.dart b/lib/pages/member/archive/view.dart index f387a557..f34a396c 100644 --- a/lib/pages/member/archive/view.dart +++ b/lib/pages/member/archive/view.dart @@ -5,10 +5,12 @@ import 'package:loading_more_list/loading_more_list.dart'; import 'package:pilipala/common/widgets/video_card_h.dart'; import 'package:pilipala/models/member/archive.dart'; import 'package:pilipala/pages/member/archive/index.dart'; +import 'package:pilipala/utils/utils.dart'; import 'package:pull_to_refresh_notification/pull_to_refresh_notification.dart'; class ArchivePanel extends StatefulWidget { - const ArchivePanel({super.key}); + final int? mid; + const ArchivePanel({super.key, this.mid}); @override State createState() => _ArchivePanelState(); @@ -17,13 +19,21 @@ class ArchivePanel extends StatefulWidget { class _ArchivePanelState extends State with AutomaticKeepAliveClientMixin { DateTime lastRefreshTime = DateTime.now(); - late final LoadMoreListSource source = LoadMoreListSource(); - final ArchiveController _archiveController = - Get.put(ArchiveController(), tag: Get.arguments['heroTag']); + late final LoadMoreListSource source; + late final ArchiveController _archiveController; @override bool get wantKeepAlive => true; + @override + void initState() { + super.initState(); + print('🐶🐶: ${widget.mid}'); + _archiveController = Get.put(ArchiveController(widget.mid), + tag: Utils.makeHeroTag(widget.mid)); + source = LoadMoreListSource(_archiveController); + } + @override Widget build(BuildContext context) { super.build(context); @@ -193,16 +203,16 @@ class _ArchivePanelState extends State } class LoadMoreListSource extends LoadingMoreBase { - final ArchiveController _archiveController = - Get.put(ArchiveController(), tag: Get.arguments['heroTag']); + late ArchiveController ctr; + LoadMoreListSource(this.ctr); bool forceRefresh = false; @override Future loadData([bool isloadMoreAction = false]) async { bool isSuccess = false; - var res = await _archiveController.getMemberArchive(); + var res = await ctr.getMemberArchive(); if (res['status']) { - if (_archiveController.pn == 2) { + if (ctr.pn == 2) { clear(); } addAll(res['data'].list.vlist); diff --git a/lib/pages/member/dynamic/controller.dart b/lib/pages/member/dynamic/controller.dart index ff45e056..480afd09 100644 --- a/lib/pages/member/dynamic/controller.dart +++ b/lib/pages/member/dynamic/controller.dart @@ -2,6 +2,7 @@ import 'package:get/get.dart'; import 'package:pilipala/http/member.dart'; class MemberDynamicPanelController extends GetxController { + MemberDynamicPanelController(this.mid); int? mid; String offset = ''; int count = 0; @@ -9,7 +10,7 @@ class MemberDynamicPanelController extends GetxController { @override void onInit() { super.onInit(); - mid = int.parse(Get.parameters['mid']!); + mid ??= int.parse(Get.parameters['mid']!); } Future getMemberDynamic() async { diff --git a/lib/pages/member/dynamic/view.dart b/lib/pages/member/dynamic/view.dart index 1c48baa9..6ceb3d14 100644 --- a/lib/pages/member/dynamic/view.dart +++ b/lib/pages/member/dynamic/view.dart @@ -4,11 +4,13 @@ import 'package:get/get.dart'; import 'package:loading_more_list/loading_more_list.dart'; import 'package:pilipala/models/dynamics/result.dart'; import 'package:pilipala/pages/dynamics/widgets/dynamic_panel.dart'; +import 'package:pilipala/utils/utils.dart'; import 'controller.dart'; class MemberDynamicPanel extends StatefulWidget { - const MemberDynamicPanel({super.key}); + final int? mid; + const MemberDynamicPanel({super.key, this.mid}); @override State createState() => _MemberDynamicPanelState(); @@ -17,11 +19,20 @@ class MemberDynamicPanel extends StatefulWidget { class _MemberDynamicPanelState extends State with AutomaticKeepAliveClientMixin { DateTime lastRefreshTime = DateTime.now(); - late final LoadMoreListSource source = LoadMoreListSource(); + late final LoadMoreListSource source; + late final MemberDynamicPanelController _dynamicController; @override bool get wantKeepAlive => true; + @override + void initState() { + super.initState(); + _dynamicController = Get.put(MemberDynamicPanelController(widget.mid), + tag: Utils.makeHeroTag(widget.mid)); + source = LoadMoreListSource(_dynamicController); + } + @override Widget build(BuildContext context) { super.build(context); @@ -118,13 +129,13 @@ class _MemberDynamicPanelState extends State } class LoadMoreListSource extends LoadingMoreBase { - final _dynamicController = - Get.put(MemberDynamicPanelController(), tag: Get.arguments['heroTag']); + late MemberDynamicPanelController ctr; + LoadMoreListSource(this.ctr); @override Future loadData([bool isloadMoreAction = false]) async { bool isSuccess = false; - var res = await _dynamicController.getMemberDynamic(); + var res = await ctr.getMemberDynamic(); if (res['status']) { addAll(res['data'].items); } diff --git a/lib/pages/member/view.dart b/lib/pages/member/view.dart index 66db7ec8..d769e2ad 100644 --- a/lib/pages/member/view.dart +++ b/lib/pages/member/view.dart @@ -27,12 +27,13 @@ class _MemberPageState extends State final ScrollController _extendNestCtr = ScrollController(); late TabController _tabController; final StreamController appbarStream = StreamController(); + late int mid; @override void initState() { super.initState(); - heroTag = - Get.arguments['heroTag'] ?? Utils.makeHeroTag(Get.parameters['mid']); + mid = int.parse(Get.parameters['mid']!); + heroTag = Get.arguments['heroTag'] ?? Utils.makeHeroTag(mid); _memberController = Get.put(MemberController(), tag: heroTag); _tabController = TabController(length: 3, vsync: this, initialIndex: 2); _futureBuilderFuture = _memberController.getInfo(); @@ -372,10 +373,10 @@ class _MemberPageState extends State Expanded( child: TabBarView( controller: _tabController, - children: const [ - Text('主页'), - MemberDynamicPanel(), - ArchivePanel(), + children: [ + const Text('主页'), + MemberDynamicPanel(mid: mid), + ArchivePanel(mid: mid), ], )) ],