fix: issues #166

This commit is contained in:
guozhigq
2023-10-14 15:46:03 +08:00
parent 856d699fd7
commit 7ecfbac786
5 changed files with 46 additions and 21 deletions

View File

@ -2,6 +2,7 @@ import 'package:get/get.dart';
import 'package:pilipala/http/member.dart'; import 'package:pilipala/http/member.dart';
class ArchiveController extends GetxController { class ArchiveController extends GetxController {
ArchiveController(this.mid);
int? mid; int? mid;
int pn = 1; int pn = 1;
int count = 0; int count = 0;
@ -15,7 +16,8 @@ class ArchiveController extends GetxController {
@override @override
void onInit() { void onInit() {
super.onInit(); super.onInit();
mid = int.parse(Get.parameters['mid']!); mid ??= int.parse(Get.parameters['mid']!);
print('🐶🐶: $mid');
currentOrder.value = orderList.first; currentOrder.value = orderList.first;
} }

View File

@ -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/common/widgets/video_card_h.dart';
import 'package:pilipala/models/member/archive.dart'; import 'package:pilipala/models/member/archive.dart';
import 'package:pilipala/pages/member/archive/index.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'; import 'package:pull_to_refresh_notification/pull_to_refresh_notification.dart';
class ArchivePanel extends StatefulWidget { class ArchivePanel extends StatefulWidget {
const ArchivePanel({super.key}); final int? mid;
const ArchivePanel({super.key, this.mid});
@override @override
State<ArchivePanel> createState() => _ArchivePanelState(); State<ArchivePanel> createState() => _ArchivePanelState();
@ -17,13 +19,21 @@ class ArchivePanel extends StatefulWidget {
class _ArchivePanelState extends State<ArchivePanel> class _ArchivePanelState extends State<ArchivePanel>
with AutomaticKeepAliveClientMixin { with AutomaticKeepAliveClientMixin {
DateTime lastRefreshTime = DateTime.now(); DateTime lastRefreshTime = DateTime.now();
late final LoadMoreListSource source = LoadMoreListSource(); late final LoadMoreListSource source;
final ArchiveController _archiveController = late final ArchiveController _archiveController;
Get.put(ArchiveController(), tag: Get.arguments['heroTag']);
@override @override
bool get wantKeepAlive => true; 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 @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
super.build(context); super.build(context);
@ -193,16 +203,16 @@ class _ArchivePanelState extends State<ArchivePanel>
} }
class LoadMoreListSource extends LoadingMoreBase<VListItemModel> { class LoadMoreListSource extends LoadingMoreBase<VListItemModel> {
final ArchiveController _archiveController = late ArchiveController ctr;
Get.put(ArchiveController(), tag: Get.arguments['heroTag']); LoadMoreListSource(this.ctr);
bool forceRefresh = false; bool forceRefresh = false;
@override @override
Future<bool> loadData([bool isloadMoreAction = false]) async { Future<bool> loadData([bool isloadMoreAction = false]) async {
bool isSuccess = false; bool isSuccess = false;
var res = await _archiveController.getMemberArchive(); var res = await ctr.getMemberArchive();
if (res['status']) { if (res['status']) {
if (_archiveController.pn == 2) { if (ctr.pn == 2) {
clear(); clear();
} }
addAll(res['data'].list.vlist); addAll(res['data'].list.vlist);

View File

@ -2,6 +2,7 @@ import 'package:get/get.dart';
import 'package:pilipala/http/member.dart'; import 'package:pilipala/http/member.dart';
class MemberDynamicPanelController extends GetxController { class MemberDynamicPanelController extends GetxController {
MemberDynamicPanelController(this.mid);
int? mid; int? mid;
String offset = ''; String offset = '';
int count = 0; int count = 0;
@ -9,7 +10,7 @@ class MemberDynamicPanelController extends GetxController {
@override @override
void onInit() { void onInit() {
super.onInit(); super.onInit();
mid = int.parse(Get.parameters['mid']!); mid ??= int.parse(Get.parameters['mid']!);
} }
Future getMemberDynamic() async { Future getMemberDynamic() async {

View File

@ -4,11 +4,13 @@ import 'package:get/get.dart';
import 'package:loading_more_list/loading_more_list.dart'; import 'package:loading_more_list/loading_more_list.dart';
import 'package:pilipala/models/dynamics/result.dart'; import 'package:pilipala/models/dynamics/result.dart';
import 'package:pilipala/pages/dynamics/widgets/dynamic_panel.dart'; import 'package:pilipala/pages/dynamics/widgets/dynamic_panel.dart';
import 'package:pilipala/utils/utils.dart';
import 'controller.dart'; import 'controller.dart';
class MemberDynamicPanel extends StatefulWidget { class MemberDynamicPanel extends StatefulWidget {
const MemberDynamicPanel({super.key}); final int? mid;
const MemberDynamicPanel({super.key, this.mid});
@override @override
State<MemberDynamicPanel> createState() => _MemberDynamicPanelState(); State<MemberDynamicPanel> createState() => _MemberDynamicPanelState();
@ -17,11 +19,20 @@ class MemberDynamicPanel extends StatefulWidget {
class _MemberDynamicPanelState extends State<MemberDynamicPanel> class _MemberDynamicPanelState extends State<MemberDynamicPanel>
with AutomaticKeepAliveClientMixin { with AutomaticKeepAliveClientMixin {
DateTime lastRefreshTime = DateTime.now(); DateTime lastRefreshTime = DateTime.now();
late final LoadMoreListSource source = LoadMoreListSource(); late final LoadMoreListSource source;
late final MemberDynamicPanelController _dynamicController;
@override @override
bool get wantKeepAlive => true; bool get wantKeepAlive => true;
@override
void initState() {
super.initState();
_dynamicController = Get.put(MemberDynamicPanelController(widget.mid),
tag: Utils.makeHeroTag(widget.mid));
source = LoadMoreListSource(_dynamicController);
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
super.build(context); super.build(context);
@ -118,13 +129,13 @@ class _MemberDynamicPanelState extends State<MemberDynamicPanel>
} }
class LoadMoreListSource extends LoadingMoreBase<DynamicItemModel> { class LoadMoreListSource extends LoadingMoreBase<DynamicItemModel> {
final _dynamicController = late MemberDynamicPanelController ctr;
Get.put(MemberDynamicPanelController(), tag: Get.arguments['heroTag']); LoadMoreListSource(this.ctr);
@override @override
Future<bool> loadData([bool isloadMoreAction = false]) async { Future<bool> loadData([bool isloadMoreAction = false]) async {
bool isSuccess = false; bool isSuccess = false;
var res = await _dynamicController.getMemberDynamic(); var res = await ctr.getMemberDynamic();
if (res['status']) { if (res['status']) {
addAll(res['data'].items); addAll(res['data'].items);
} }

View File

@ -27,12 +27,13 @@ class _MemberPageState extends State<MemberPage>
final ScrollController _extendNestCtr = ScrollController(); final ScrollController _extendNestCtr = ScrollController();
late TabController _tabController; late TabController _tabController;
final StreamController<bool> appbarStream = StreamController<bool>(); final StreamController<bool> appbarStream = StreamController<bool>();
late int mid;
@override @override
void initState() { void initState() {
super.initState(); super.initState();
heroTag = mid = int.parse(Get.parameters['mid']!);
Get.arguments['heroTag'] ?? Utils.makeHeroTag(Get.parameters['mid']); heroTag = Get.arguments['heroTag'] ?? Utils.makeHeroTag(mid);
_memberController = Get.put(MemberController(), tag: heroTag); _memberController = Get.put(MemberController(), tag: heroTag);
_tabController = TabController(length: 3, vsync: this, initialIndex: 2); _tabController = TabController(length: 3, vsync: this, initialIndex: 2);
_futureBuilderFuture = _memberController.getInfo(); _futureBuilderFuture = _memberController.getInfo();
@ -372,10 +373,10 @@ class _MemberPageState extends State<MemberPage>
Expanded( Expanded(
child: TabBarView( child: TabBarView(
controller: _tabController, controller: _tabController,
children: const [ children: [
Text('主页'), const Text('主页'),
MemberDynamicPanel(), MemberDynamicPanel(mid: mid),
ArchivePanel(), ArchivePanel(mid: mid),
], ],
)) ))
], ],