diff --git a/lib/pages/dynamics/widgets/live_rcmd_panel.dart b/lib/pages/dynamics/widgets/live_rcmd_panel.dart index 9589f919..58c554ae 100644 --- a/lib/pages/dynamics/widgets/live_rcmd_panel.dart +++ b/lib/pages/dynamics/widgets/live_rcmd_panel.dart @@ -66,76 +66,85 @@ Widget liveRcmdPanel(item, context, {floor = 1}) { }, child: LayoutBuilder(builder: (context, box) { double width = box.maxWidth; - return Stack( - children: [ - Hero( - tag: liveRcmd.roomId.toString(), - child: NetworkImgLayer( - type: floor == 1 ? 'emote' : null, - width: width, - height: width / StyleString.aspectRatio, - src: item.modules.moduleDynamic.major.liveRcmd.cover, - ), - ), - PBadge( - text: watchedShow['text_large'], - top: 6, - right: 56, - bottom: null, - left: null, - type: 'gray', - ), - PBadge( - text: liveStatus == 1 ? '直播中' : '直播结束', - top: 6, - right: 6, - bottom: null, - left: null, - ), - Positioned( - left: 0, - right: 0, - bottom: 0, - child: Container( - height: 80, - padding: const EdgeInsets.fromLTRB(12, 0, 10, 10), - clipBehavior: Clip.hardEdge, - decoration: BoxDecoration( - gradient: const LinearGradient( - begin: Alignment.topCenter, - end: Alignment.bottomCenter, - colors: [ - Colors.transparent, - Colors.black45, - ], - ), - borderRadius: floor == 1 - ? null - : const BorderRadius.all(Radius.circular(6))), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - crossAxisAlignment: CrossAxisAlignment.end, - children: [ - DefaultTextStyle.merge( - style: TextStyle( - fontSize: Theme.of(context) - .textTheme - .labelMedium! - .fontSize, - color: Colors.white), - child: Row( - children: [ - Text(item.modules.moduleDynamic.major.liveRcmd - .areaName ?? - ''), - ], - ), - ), - ], + return Container( + margin: floor == 1 + ? const EdgeInsets.only( + left: StyleString.safeSpace, right: StyleString.safeSpace) + : EdgeInsets.zero, + clipBehavior: Clip.hardEdge, + decoration: const BoxDecoration( + borderRadius: BorderRadius.all(StyleString.imgRadius)), + child: Stack( + children: [ + Hero( + tag: liveRcmd.roomId.toString(), + child: NetworkImgLayer( + type: floor == 1 ? 'emote' : null, + width: width, + height: width / StyleString.aspectRatio, + src: item.modules.moduleDynamic.major.liveRcmd.cover, ), ), - ), - ], + PBadge( + text: watchedShow['text_large'], + top: 8.0, + right: 62.0, + bottom: null, + left: null, + type: 'gray', + ), + PBadge( + text: liveStatus == 1 ? '直播中' : '直播结束', + top: 8.0, + right: 10.0, + bottom: null, + left: null, + ), + Positioned( + left: 0, + right: 0, + bottom: 0, + child: Container( + height: 80, + padding: const EdgeInsets.fromLTRB(12, 0, 10, 10), + clipBehavior: Clip.hardEdge, + decoration: BoxDecoration( + gradient: const LinearGradient( + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + colors: [ + Colors.transparent, + Colors.black45, + ], + ), + borderRadius: floor == 1 + ? null + : const BorderRadius.all(Radius.circular(6))), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + DefaultTextStyle.merge( + style: TextStyle( + fontSize: Theme.of(context) + .textTheme + .labelMedium! + .fontSize, + color: Colors.white), + child: Row( + children: [ + Text(item.modules.moduleDynamic.major.liveRcmd + .areaName ?? + ''), + ], + ), + ), + ], + ), + ), + ), + ], + ), ); }), ), diff --git a/lib/pages/dynamics/widgets/video_panel.dart b/lib/pages/dynamics/widgets/video_panel.dart index 75f16a3b..f8d880b1 100644 --- a/lib/pages/dynamics/widgets/video_panel.dart +++ b/lib/pages/dynamics/widgets/video_panel.dart @@ -78,72 +78,83 @@ Widget videoSeasonWidget(item, context, type, {floor = 1}) { ], LayoutBuilder(builder: (context, box) { double width = box.maxWidth; - return Stack( - children: [ - NetworkImgLayer( - type: floor == 1 ? 'emote' : null, - width: width, - height: width / StyleString.aspectRatio, - src: content.cover, - ), - if (content.badge != null && content.badge['text'] != null) - PBadge( - text: content.badge['text'], - top: 8.0, - right: 10.0, - bottom: null, - left: null, + return Container( + margin: floor == 1 + ? const EdgeInsets.only( + left: StyleString.safeSpace, right: StyleString.safeSpace) + : EdgeInsets.zero, + clipBehavior: Clip.hardEdge, + decoration: const BoxDecoration( + borderRadius: BorderRadius.all(StyleString.imgRadius)), + child: Stack( + children: [ + NetworkImgLayer( + type: floor == 1 ? 'emote' : null, + width: width, + height: width / StyleString.aspectRatio, + src: content.cover, ), - Positioned( - left: 0, - right: 0, - bottom: 0, - child: Container( - height: 80, - padding: const EdgeInsets.fromLTRB(12, 0, 10, 10), - clipBehavior: Clip.hardEdge, - decoration: BoxDecoration( - gradient: const LinearGradient( - begin: Alignment.topCenter, - end: Alignment.bottomCenter, - colors: [ - Colors.transparent, - Colors.black54, - ], - ), - borderRadius: floor == 1 - ? null - : const BorderRadius.all(Radius.circular(6))), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - crossAxisAlignment: CrossAxisAlignment.end, - children: [ - DefaultTextStyle.merge( - style: TextStyle( - fontSize: - Theme.of(context).textTheme.labelMedium!.fontSize, - color: Colors.white), - child: Row( - children: [ - Text(content.durationText ?? ''), - if (content.durationText != null) - const SizedBox(width: 10), - Text(content.stat.play + '次围观'), - const SizedBox(width: 10), - Text(content.stat.danmaku + '条弹幕') + if (content.badge != null && content.badge['text'] != null) + PBadge( + text: content.badge['text'], + top: 8.0, + right: 10.0, + bottom: null, + left: null, + ), + Positioned( + left: 0, + right: 0, + bottom: 0, + child: Container( + height: 80, + padding: const EdgeInsets.fromLTRB(12, 0, 10, 10), + clipBehavior: Clip.hardEdge, + decoration: BoxDecoration( + gradient: const LinearGradient( + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + colors: [ + Colors.transparent, + Colors.black54, ], ), - ), - Image.asset( - 'assets/images/play.png', - width: 60, - height: 60, - ), - ], + borderRadius: floor == 1 + ? null + : const BorderRadius.all(Radius.circular(6))), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + DefaultTextStyle.merge( + style: TextStyle( + fontSize: Theme.of(context) + .textTheme + .labelMedium! + .fontSize, + color: Colors.white), + child: Row( + children: [ + Text(content.durationText ?? ''), + if (content.durationText != null) + const SizedBox(width: 10), + Text(content.stat.play + '次围观'), + const SizedBox(width: 10), + Text(content.stat.danmaku + '条弹幕') + ], + ), + ), + Image.asset( + 'assets/images/play.png', + width: 60, + height: 60, + ), + ], + ), ), ), - ), - ], + ], + ), ); }), const SizedBox(height: 6),