mirror of
https://github.com/HChaZZY/PiliPlus.git
synced 2025-12-18 16:16:14 +08:00
opt: video page v
Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
@@ -2088,7 +2088,7 @@ class VideoDetailController extends GetxController
|
|||||||
@override
|
@override
|
||||||
void onClose() {
|
void onClose() {
|
||||||
tabCtr.dispose();
|
tabCtr.dispose();
|
||||||
if (Get.currentRoute.startsWith('/videoV')) {
|
if (GStorage.collapsibleVideoPage) {
|
||||||
scrollCtr.removeListener(scrollListener);
|
scrollCtr.removeListener(scrollListener);
|
||||||
scrollCtr.dispose;
|
scrollCtr.dispose;
|
||||||
animationController.dispose();
|
animationController.dispose();
|
||||||
@@ -2101,7 +2101,7 @@ class VideoDetailController extends GetxController
|
|||||||
videoUrl = null;
|
videoUrl = null;
|
||||||
audioUrl = null;
|
audioUrl = null;
|
||||||
|
|
||||||
if (Get.currentRoute.startsWith('/videoV') && scrollRatio.value != 0) {
|
if (GStorage.collapsibleVideoPage && scrollRatio.value != 0) {
|
||||||
scrollRatio.refresh();
|
scrollRatio.refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -111,7 +111,7 @@ class _VideoReplyPanelState extends State<VideoReplyPanel>
|
|||||||
parent: ClampingScrollPhysics(),
|
parent: ClampingScrollPhysics(),
|
||||||
)
|
)
|
||||||
: const AlwaysScrollableScrollPhysics(),
|
: const AlwaysScrollableScrollPhysics(),
|
||||||
// key: const PageStorageKey<String>('评论'),
|
key: const PageStorageKey<String>('评论'),
|
||||||
slivers: <Widget>[
|
slivers: <Widget>[
|
||||||
SliverPersistentHeader(
|
SliverPersistentHeader(
|
||||||
pinned: false,
|
pinned: false,
|
||||||
|
|||||||
@@ -254,11 +254,15 @@ class _VideoDetailPageVState extends State<VideoDetailPageV>
|
|||||||
videoDetailController.scrollCtr.offset /
|
videoDetailController.scrollCtr.offset /
|
||||||
videoDetailController.videoHeight);
|
videoDetailController.videoHeight);
|
||||||
} else {
|
} else {
|
||||||
|
if (videoDetailController.scrollKey.currentState?.mounted == true) {
|
||||||
videoDetailController.scrollKey.currentState?.setState(() {});
|
videoDetailController.scrollKey.currentState?.setState(() {});
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
|
if (videoDetailController.scrollKey.currentState?.mounted == true) {
|
||||||
videoDetailController.scrollKey.currentState?.setState(() {});
|
videoDetailController.scrollKey.currentState?.setState(() {});
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
debugPrint('handle playe status: $e');
|
debugPrint('handle playe status: $e');
|
||||||
}
|
}
|
||||||
@@ -644,9 +648,7 @@ class _VideoDetailPageVState extends State<VideoDetailPageV>
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
body: Builder(
|
body: ExtendedNestedScrollView(
|
||||||
builder: (context) {
|
|
||||||
return ExtendedNestedScrollView(
|
|
||||||
key: videoDetailController.scrollKey,
|
key: videoDetailController.scrollKey,
|
||||||
physics: const NeverScrollableScrollPhysics(
|
physics: const NeverScrollableScrollPhysics(
|
||||||
parent: ClampingScrollPhysics(),
|
parent: ClampingScrollPhysics(),
|
||||||
@@ -660,8 +662,7 @@ class _VideoDetailPageVState extends State<VideoDetailPageV>
|
|||||||
videoDetailController.isCollapsing
|
videoDetailController.isCollapsing
|
||||||
? animHeight
|
? animHeight
|
||||||
: videoDetailController.isCollapsing ||
|
: videoDetailController.isCollapsing ||
|
||||||
plPlayerController
|
plPlayerController?.playerStatus.status.value ==
|
||||||
?.playerStatus.status.value ==
|
|
||||||
PlayerStatus.playing
|
PlayerStatus.playing
|
||||||
? videoDetailController.minVideoHeight
|
? videoDetailController.minVideoHeight
|
||||||
: kToolbarHeight;
|
: kToolbarHeight;
|
||||||
@@ -669,15 +670,22 @@ class _VideoDetailPageVState extends State<VideoDetailPageV>
|
|||||||
videoDetailController.animationController.value == 1) {
|
videoDetailController.animationController.value == 1) {
|
||||||
videoDetailController.isExpanding = false;
|
videoDetailController.isExpanding = false;
|
||||||
WidgetsBinding.instance.addPostFrameCallback((_) {
|
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||||
|
if (videoDetailController.scrollKey.currentState?.mounted ==
|
||||||
|
true) {
|
||||||
|
videoDetailController.scrollRatio.value = 0;
|
||||||
videoDetailController.scrollKey.currentState
|
videoDetailController.scrollKey.currentState
|
||||||
?.setState(() {});
|
?.setState(() {});
|
||||||
|
}
|
||||||
});
|
});
|
||||||
} else if (videoDetailController.isCollapsing &&
|
} else if (videoDetailController.isCollapsing &&
|
||||||
videoDetailController.animationController.value == 1) {
|
videoDetailController.animationController.value == 1) {
|
||||||
videoDetailController.isCollapsing = false;
|
videoDetailController.isCollapsing = false;
|
||||||
WidgetsBinding.instance.addPostFrameCallback((_) {
|
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||||
|
if (videoDetailController.scrollKey.currentState?.mounted ==
|
||||||
|
true) {
|
||||||
videoDetailController.scrollKey.currentState
|
videoDetailController.scrollKey.currentState
|
||||||
?.setState(() {});
|
?.setState(() {});
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
return height;
|
return height;
|
||||||
@@ -728,9 +736,7 @@ class _VideoDetailPageVState extends State<VideoDetailPageV>
|
|||||||
Orientation.landscape ||
|
Orientation.landscape ||
|
||||||
removeSafeArea
|
removeSafeArea
|
||||||
? 0
|
? 0
|
||||||
: MediaQuery.of(context)
|
: MediaQuery.of(context).padding.top)
|
||||||
.padding
|
|
||||||
.top)
|
|
||||||
: videoDetailController.isExpanding ||
|
: videoDetailController.isExpanding ||
|
||||||
videoDetailController.isCollapsing
|
videoDetailController.isCollapsing
|
||||||
? animHeight
|
? animHeight
|
||||||
@@ -741,8 +747,7 @@ class _VideoDetailPageVState extends State<VideoDetailPageV>
|
|||||||
(horizontalScreen ||
|
(horizontalScreen ||
|
||||||
MediaQuery.of(context).orientation ==
|
MediaQuery.of(context).orientation ==
|
||||||
Orientation.portrait),
|
Orientation.portrait),
|
||||||
onPopInvokedWithResult:
|
onPopInvokedWithResult: _onPopInvokedWithResult,
|
||||||
_onPopInvokedWithResult,
|
|
||||||
child: videoPlayer(
|
child: videoPlayer(
|
||||||
videoWidth,
|
videoWidth,
|
||||||
videoDetailController.isExpanding ||
|
videoDetailController.isExpanding ||
|
||||||
@@ -760,8 +765,7 @@ class _VideoDetailPageVState extends State<VideoDetailPageV>
|
|||||||
opacity:
|
opacity:
|
||||||
videoDetailController.scrollRatio.value,
|
videoDetailController.scrollRatio.value,
|
||||||
child: Container(
|
child: Container(
|
||||||
color:
|
color: Theme.of(context).colorScheme.surface,
|
||||||
Theme.of(context).colorScheme.surface,
|
|
||||||
alignment: Alignment.topCenter,
|
alignment: Alignment.topCenter,
|
||||||
child: SizedBox(
|
child: SizedBox(
|
||||||
height: kToolbarHeight,
|
height: kToolbarHeight,
|
||||||
@@ -778,8 +782,7 @@ class _VideoDetailPageVState extends State<VideoDetailPageV>
|
|||||||
child: IconButton(
|
child: IconButton(
|
||||||
tooltip: '返回',
|
tooltip: '返回',
|
||||||
icon: Icon(
|
icon: Icon(
|
||||||
FontAwesomeIcons
|
FontAwesomeIcons.arrowLeft,
|
||||||
.arrowLeft,
|
|
||||||
size: 15,
|
size: 15,
|
||||||
color: Theme.of(context)
|
color: Theme.of(context)
|
||||||
.colorScheme
|
.colorScheme
|
||||||
@@ -835,17 +838,14 @@ class _VideoDetailPageVState extends State<VideoDetailPageV>
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
return videoDetailController.scrollRatio.value ==
|
return videoDetailController.scrollRatio.value == 0 ||
|
||||||
0 ||
|
videoDetailController.scrollCtr.offset == 0
|
||||||
videoDetailController.scrollCtr.offset ==
|
|
||||||
0
|
|
||||||
? const SizedBox.shrink()
|
? const SizedBox.shrink()
|
||||||
: Positioned.fill(
|
: Positioned.fill(
|
||||||
bottom: -2,
|
bottom: -2,
|
||||||
child: GestureDetector(
|
child: GestureDetector(
|
||||||
onTap: () async {
|
onTap: () async {
|
||||||
if (videoDetailController
|
if (videoDetailController.isQuerying) {
|
||||||
.isQuerying) {
|
|
||||||
debugPrint('handlePlay: querying');
|
debugPrint('handlePlay: querying');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -855,12 +855,11 @@ class _VideoDetailPageVState extends State<VideoDetailPageV>
|
|||||||
null) {
|
null) {
|
||||||
debugPrint(
|
debugPrint(
|
||||||
'handlePlay: videoUrl/audioUrl not initialized');
|
'handlePlay: videoUrl/audioUrl not initialized');
|
||||||
videoDetailController
|
videoDetailController.queryVideoUrl();
|
||||||
.queryVideoUrl();
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
videoDetailController
|
videoDetailController.scrollRatio.value =
|
||||||
.scrollRatio.value = 0;
|
0;
|
||||||
if (plPlayerController == null) {
|
if (plPlayerController == null) {
|
||||||
handlePlay();
|
handlePlay();
|
||||||
} else {
|
} else {
|
||||||
@@ -919,8 +918,6 @@ class _VideoDetailPageVState extends State<VideoDetailPageV>
|
|||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
);
|
|
||||||
},
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user