Merge branch 'main' into fix
This commit is contained in:
@ -5,7 +5,7 @@ import 'package:pilipala/common/constants.dart';
|
|||||||
import 'package:pilipala/common/widgets/network_img_layer.dart';
|
import 'package:pilipala/common/widgets/network_img_layer.dart';
|
||||||
import 'package:pilipala/models/video_detail_res.dart';
|
import 'package:pilipala/models/video_detail_res.dart';
|
||||||
import 'package:pilipala/utils/utils.dart';
|
import 'package:pilipala/utils/utils.dart';
|
||||||
import 'package:scrollable_positioned_list/scrollable_positioned_list.dart';
|
import 'package:scrollview_observer/scrollview_observer.dart';
|
||||||
import '../models/common/video_episode_type.dart';
|
import '../models/common/video_episode_type.dart';
|
||||||
import 'widgets/badge.dart';
|
import 'widgets/badge.dart';
|
||||||
import 'widgets/stat/danmu.dart';
|
import 'widgets/stat/danmu.dart';
|
||||||
@ -83,7 +83,8 @@ class PagesBottomSheet extends StatefulWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class _PagesBottomSheetState extends State<PagesBottomSheet> {
|
class _PagesBottomSheetState extends State<PagesBottomSheet> {
|
||||||
final ItemScrollController _itemScrollController = ItemScrollController();
|
final ScrollController _listScrollController = ScrollController();
|
||||||
|
late ListObserverController _listObserverController;
|
||||||
final ScrollController _scrollController = ScrollController();
|
final ScrollController _scrollController = ScrollController();
|
||||||
late int currentIndex;
|
late int currentIndex;
|
||||||
|
|
||||||
@ -92,10 +93,17 @@ class _PagesBottomSheetState extends State<PagesBottomSheet> {
|
|||||||
super.initState();
|
super.initState();
|
||||||
currentIndex =
|
currentIndex =
|
||||||
widget.episodes.indexWhere((dynamic e) => e.cid == widget.currentCid);
|
widget.episodes.indexWhere((dynamic e) => e.cid == widget.currentCid);
|
||||||
|
_listObserverController =
|
||||||
|
ListObserverController(controller: _listScrollController);
|
||||||
|
if (widget.dataType == VideoEpidoesType.videoEpisode) {
|
||||||
|
_listObserverController.initialIndexModel = ObserverIndexPositionModel(
|
||||||
|
index: currentIndex,
|
||||||
|
isFixedHeight: true,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
WidgetsBinding.instance.addPostFrameCallback((_) {
|
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||||
if (widget.dataType == VideoEpidoesType.videoEpisode) {
|
if (widget.dataType != VideoEpidoesType.videoEpisode) {
|
||||||
_itemScrollController.jumpTo(index: currentIndex);
|
|
||||||
} else {
|
|
||||||
double itemHeight = (widget.isFullScreen
|
double itemHeight = (widget.isFullScreen
|
||||||
? 400
|
? 400
|
||||||
: Get.size.width - 3 * StyleString.safeSpace) /
|
: Get.size.width - 3 * StyleString.safeSpace) /
|
||||||
@ -118,6 +126,12 @@ class _PagesBottomSheetState extends State<PagesBottomSheet> {
|
|||||||
return '选集';
|
return '选集';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void dispose() {
|
||||||
|
_listObserverController.controller?.dispose();
|
||||||
|
super.dispose();
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return StatefulBuilder(
|
return StatefulBuilder(
|
||||||
@ -136,27 +150,30 @@ class _PagesBottomSheetState extends State<PagesBottomSheet> {
|
|||||||
Expanded(
|
Expanded(
|
||||||
child: Material(
|
child: Material(
|
||||||
child: widget.dataType == VideoEpidoesType.videoEpisode
|
child: widget.dataType == VideoEpidoesType.videoEpisode
|
||||||
? ScrollablePositionedList.builder(
|
? ListViewObserver(
|
||||||
itemScrollController: _itemScrollController,
|
controller: _listObserverController,
|
||||||
itemCount: widget.episodes.length + 1,
|
child: ListView.builder(
|
||||||
itemBuilder: (BuildContext context, int index) {
|
controller: _listScrollController,
|
||||||
bool isLastItem = index == widget.episodes.length;
|
itemCount: widget.episodes.length + 1,
|
||||||
bool isCurrentIndex = currentIndex == index;
|
itemBuilder: (BuildContext context, int index) {
|
||||||
return isLastItem
|
bool isLastItem = index == widget.episodes.length;
|
||||||
? SizedBox(
|
bool isCurrentIndex = currentIndex == index;
|
||||||
height:
|
return isLastItem
|
||||||
MediaQuery.of(context).padding.bottom +
|
? SizedBox(
|
||||||
20,
|
height:
|
||||||
)
|
MediaQuery.of(context).padding.bottom +
|
||||||
: EpisodeListItem(
|
20,
|
||||||
episode: widget.episodes[index],
|
)
|
||||||
index: index,
|
: EpisodeListItem(
|
||||||
isCurrentIndex: isCurrentIndex,
|
episode: widget.episodes[index],
|
||||||
dataType: widget.dataType,
|
index: index,
|
||||||
changeFucCall: widget.changeFucCall,
|
isCurrentIndex: isCurrentIndex,
|
||||||
isFullScreen: widget.isFullScreen,
|
dataType: widget.dataType,
|
||||||
);
|
changeFucCall: widget.changeFucCall,
|
||||||
},
|
isFullScreen: widget.isFullScreen,
|
||||||
|
);
|
||||||
|
},
|
||||||
|
),
|
||||||
)
|
)
|
||||||
: Padding(
|
: Padding(
|
||||||
padding: const EdgeInsets.symmetric(
|
padding: const EdgeInsets.symmetric(
|
||||||
|
|||||||
@ -7,7 +7,6 @@ import 'package:hive/hive.dart';
|
|||||||
import 'package:pilipala/models/bangumi/info.dart';
|
import 'package:pilipala/models/bangumi/info.dart';
|
||||||
import 'package:pilipala/pages/video/detail/index.dart';
|
import 'package:pilipala/pages/video/detail/index.dart';
|
||||||
import 'package:pilipala/utils/storage.dart';
|
import 'package:pilipala/utils/storage.dart';
|
||||||
import 'package:scrollable_positioned_list/scrollable_positioned_list.dart';
|
|
||||||
import '../../../common/pages_bottom_sheet.dart';
|
import '../../../common/pages_bottom_sheet.dart';
|
||||||
import '../../../models/common/video_episode_type.dart';
|
import '../../../models/common/video_episode_type.dart';
|
||||||
import '../introduction/controller.dart';
|
import '../introduction/controller.dart';
|
||||||
@ -44,7 +43,6 @@ class _BangumiPanelState extends State<BangumiPanel> {
|
|||||||
late int cid;
|
late int cid;
|
||||||
String heroTag = Get.arguments['heroTag'];
|
String heroTag = Get.arguments['heroTag'];
|
||||||
late final VideoDetailController videoDetailCtr;
|
late final VideoDetailController videoDetailCtr;
|
||||||
final ItemScrollController itemScrollController = ItemScrollController();
|
|
||||||
late PersistentBottomSheetController? _bottomSheetController;
|
late PersistentBottomSheetController? _bottomSheetController;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
@ -1434,14 +1434,14 @@ packages:
|
|||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.flutter-io.cn"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.1.3"
|
version: "0.1.3"
|
||||||
scrollable_positioned_list:
|
scrollview_observer:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: scrollable_positioned_list
|
name: scrollview_observer
|
||||||
sha256: "1b54d5f1329a1e263269abc9e2543d90806131aa14fe7c6062a8054d57249287"
|
sha256: fa408bcfd41e19da841eb53fc471f8f952d5ef818b854d2505c4bb3f0c876381
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.flutter-io.cn"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.3.8"
|
version: "1.22.0"
|
||||||
sentry:
|
sentry:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|||||||
@ -134,7 +134,7 @@ dependencies:
|
|||||||
# 极验
|
# 极验
|
||||||
gt3_flutter_plugin: ^0.1.0
|
gt3_flutter_plugin: ^0.1.0
|
||||||
uuid: ^3.0.7
|
uuid: ^3.0.7
|
||||||
scrollable_positioned_list: ^0.3.8
|
scrollview_observer: ^1.22.0
|
||||||
catcher_2: ^1.2.6
|
catcher_2: ^1.2.6
|
||||||
logger: ^2.3.0
|
logger: ^2.3.0
|
||||||
path: ^1.9.0
|
path: ^1.9.0
|
||||||
|
|||||||
Reference in New Issue
Block a user