live first frame

Signed-off-by: dom <githubaccount56556@proton.me>
This commit is contained in:
dom
2026-03-10 11:35:24 +08:00
parent 98ce99202e
commit 3090cfc6f9
9 changed files with 215 additions and 138 deletions

View File

@@ -4,14 +4,19 @@ import 'package:PiliPlus/http/live.dart';
import 'package:PiliPlus/http/loading_state.dart';
import 'package:PiliPlus/models_new/live/live_area_list/area_item.dart';
import 'package:PiliPlus/pages/common/common_list_controller.dart';
import 'package:flutter/material.dart' show TabController;
import 'package:get/get_state_manager/src/rx_flutter/rx_ticket_provider_mixin.dart';
class LiveAreaDetailController
extends CommonListController<List<AreaItem>?, AreaItem> {
extends CommonListController<List<AreaItem>?, AreaItem>
with GetSingleTickerProviderStateMixin {
LiveAreaDetailController(this.areaId, this.parentAreaId);
final dynamic areaId;
final dynamic parentAreaId;
late int initialIndex = 0;
TabController? tabController;
bool showFirstFrame = false;
@override
void onInit() {
@@ -22,7 +27,13 @@ class LiveAreaDetailController
@override
List<AreaItem>? getDataList(List<AreaItem>? response) {
if (response != null && response.isNotEmpty) {
initialIndex = max(0, response.indexWhere((e) => e.id == areaId));
assert(tabController == null);
final initialIndex = max(0, response.indexWhere((e) => e.id == areaId));
tabController = TabController(
length: response.length,
initialIndex: initialIndex,
vsync: this,
);
}
return response;
}
@@ -30,4 +41,11 @@ class LiveAreaDetailController
@override
Future<LoadingState<List<AreaItem>?>> customGetData() =>
LiveHttp.liveRoomAreaList(parentid: parentAreaId);
@override
void onClose() {
tabController?.dispose();
tabController = null;
super.onClose();
}
}