Merge pull request #366 from orz12/fix-liveroom&statusBar-when-fullscreen

修复非异形屏全屏与直播间全屏
This commit is contained in:
guozhigq
2023-12-31 11:12:36 +08:00
committed by GitHub
2 changed files with 82 additions and 53 deletions

View File

@ -54,62 +54,83 @@ class _LiveRoomPageState extends State<LiveRoomPage> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
Widget childWhenDisabled = Scaffold( Widget childWhenDisabled = Scaffold(
primary: true, primary: true,
appBar: AppBar( appBar: PreferredSize(
centerTitle: false, preferredSize: Size.fromHeight(
titleSpacing: 0, MediaQuery.of(context).orientation == Orientation.portrait ? 56 : 0,
title: _liveRoomController.liveItem != null ),
? Row( child: AppBar(
children: [ centerTitle: false,
NetworkImgLayer( titleSpacing: 0,
width: 34, title: _liveRoomController.liveItem != null
height: 34, ? Row(
type: 'avatar', children: [
src: _liveRoomController.liveItem.face, NetworkImgLayer(
), width: 34,
const SizedBox(width: 10), height: 34,
Column( type: 'avatar',
crossAxisAlignment: CrossAxisAlignment.start, src: _liveRoomController.liveItem.face,
children: [ ),
Text( const SizedBox(width: 10),
_liveRoomController.liveItem.uname, Column(
style: const TextStyle(fontSize: 14), crossAxisAlignment: CrossAxisAlignment.start,
), children: [
const SizedBox(height: 1),
if (_liveRoomController.liveItem.watchedShow != null)
Text( Text(
_liveRoomController _liveRoomController.liveItem.uname,
.liveItem.watchedShow['text_large'] ?? style: const TextStyle(fontSize: 14),
'', ),
style: const TextStyle(fontSize: 12)), const SizedBox(height: 1),
], if (_liveRoomController.liveItem.watchedShow != null)
), Text(
], _liveRoomController
) .liveItem.watchedShow['text_large'] ??
: const SizedBox(), '',
// actions: [ style: const TextStyle(fontSize: 12)),
// SizedBox( ],
// height: 34, ),
// child: ElevatedButton(onPressed: () {}, child: const Text('关注')), ],
// ), )
// const SizedBox(width: 12), : const SizedBox(),
// ], // actions: [
// SizedBox(
// height: 34,
// child: ElevatedButton(onPressed: () {}, child: const Text('关注')),
// ),
// const SizedBox(width: 12),
// ],
),
), ),
body: Column( body: Column(
children: [ children: [
Stack( Stack(
children: [ children: [
AspectRatio( PopScope(
aspectRatio: 16 / 9, canPop: plPlayerController?.isFullScreen.value != true,
child: plPlayerController!.videoPlayerController != null onPopInvoked: (bool didPop) {
? PLVideoPlayer( if (plPlayerController?.isFullScreen.value == true) {
controller: plPlayerController!, plPlayerController!.triggerFullScreen(status: false);
bottomControl: BottomControl( }
controller: plPlayerController, if (MediaQuery.of(context).orientation ==
liveRoomCtr: _liveRoomController, Orientation.landscape) {
floating: floating, verticalScreen();
), }
) },
: const SizedBox(), child: SizedBox(
width: Get.size.width,
height: MediaQuery.of(context).orientation ==
Orientation.landscape
? Get.size.height
: Get.size.width * 9 / 16,
child: plPlayerController!.videoPlayerController != null
? PLVideoPlayer(
controller: plPlayerController!,
bottomControl: BottomControl(
controller: plPlayerController,
liveRoomCtr: _liveRoomController,
floating: floating,
),
)
: const SizedBox(),
),
), ),
// if (_liveRoomController.liveItem != null && // if (_liveRoomController.liveItem != null &&
// _liveRoomController.liveItem.cover != null) // _liveRoomController.liveItem.cover != null)

View File

@ -243,7 +243,8 @@ class _VideoDetailPageState extends State<VideoDetailPage>
exitFullScreen(); exitFullScreen();
} }
Widget childWhenDisabled = SafeArea( Widget childWhenDisabled = SafeArea(
top: MediaQuery.of(context).orientation == Orientation.portrait, top: MediaQuery.of(context).orientation == Orientation.portrait &&
plPlayerController?.isFullScreen.value == true,
bottom: MediaQuery.of(context).orientation == Orientation.portrait && bottom: MediaQuery.of(context).orientation == Orientation.portrait &&
plPlayerController?.isFullScreen.value == true, plPlayerController?.isFullScreen.value == true,
left: plPlayerController?.isFullScreen.value != true, left: plPlayerController?.isFullScreen.value != true,
@ -254,10 +255,17 @@ class _VideoDetailPageState extends State<VideoDetailPage>
resizeToAvoidBottomInset: false, resizeToAvoidBottomInset: false,
key: videoDetailController.scaffoldKey, key: videoDetailController.scaffoldKey,
backgroundColor: Colors.black, backgroundColor: Colors.black,
appBar: PreferredSize(
preferredSize: const Size.fromHeight(0),
child: AppBar(
backgroundColor: Theme.of(context).colorScheme.background,
elevation: 0,
),
),
body: ExtendedNestedScrollView( body: ExtendedNestedScrollView(
controller: _extendNestCtr, controller: _extendNestCtr,
headerSliverBuilder: headerSliverBuilder:
(BuildContext context, bool innerBoxIsScrolled) { (BuildContext _context, bool innerBoxIsScrolled) {
return <Widget>[ return <Widget>[
Obx(() => SliverAppBar( Obx(() => SliverAppBar(
automaticallyImplyLeading: false, automaticallyImplyLeading: false,
@ -272,7 +280,7 @@ class _VideoDetailPageState extends State<VideoDetailPage>
(MediaQuery.of(context).orientation == (MediaQuery.of(context).orientation ==
Orientation.landscape Orientation.landscape
? 0 ? 0
: statusBarHeight) : MediaQuery.of(context).padding.top)
: videoHeight, : videoHeight,
backgroundColor: Colors.black, backgroundColor: Colors.black,
flexibleSpace: FlexibleSpaceBar( flexibleSpace: FlexibleSpaceBar(