opt: jumpTo rebound

This commit is contained in:
guozhigq
2024-11-24 22:53:48 +08:00
parent 08cb807f39
commit ea900ffe4e

View File

@ -1,4 +1,5 @@
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart';
import 'package:pilipala/common/constants.dart';
@ -98,7 +99,8 @@ class _PagesBottomSheetState extends State<PagesBottomSheet>
with TickerProviderStateMixin {
final ScrollController _listScrollController = ScrollController();
late ListObserverController _listObserverController;
final ScrollController _scrollController = ScrollController();
late GridObserverController _gridObserverController;
final ScrollController _gridScrollController = ScrollController();
late int currentIndex;
TabController? tabController;
List<ListObserverController>? _listObserverControllerList;
@ -163,6 +165,9 @@ class _PagesBottomSheetState extends State<PagesBottomSheet>
);
},
);
} else {
_gridObserverController =
GridObserverController(controller: _gridScrollController);
}
}
@ -185,18 +190,12 @@ class _PagesBottomSheetState extends State<PagesBottomSheet>
);
}
}
} else {
_gridObserverController.initialIndexModel = ObserverIndexPositionModel(
index: currentIndex,
isFixedHeight: false,
);
}
WidgetsBinding.instance.addPostFrameCallback((_) {
if (widget.dataType != VideoEpidoesType.videoEpisode) {
double itemHeight = (widget.isFullScreen
? 400
: Get.size.width - 3 * StyleString.safeSpace) /
5.2;
double offset = ((currentIndex - 1) / 2).ceil() * itemHeight;
_scrollController.jumpTo(offset);
}
});
}
// 获取订阅状态
@ -236,7 +235,9 @@ class _PagesBottomSheetState extends State<PagesBottomSheet>
void dispose() {
try {
_listObserverController.controller?.dispose();
_gridObserverController.controller?.dispose();
_listScrollController.dispose();
_gridScrollController.dispose();
for (var element in _listObserverControllerList!) {
element.controller?.dispose();
}
@ -303,8 +304,10 @@ class _PagesBottomSheetState extends State<PagesBottomSheet>
: Padding(
padding: const EdgeInsets.symmetric(
horizontal: 12.0), // 设置左右间距为12
child: GridViewObserver(
controller: _gridObserverController,
child: GridView.count(
controller: _scrollController,
controller: _gridScrollController,
crossAxisCount: 2,
crossAxisSpacing: StyleString.safeSpace,
childAspectRatio: 2.6,
@ -326,6 +329,7 @@ class _PagesBottomSheetState extends State<PagesBottomSheet>
),
),
),
),
],
),
);