From 12e299a5d82bdd2ccfc3ef2967cbe8c84836a74b Mon Sep 17 00:00:00 2001 From: bggRGjQaUbCoE Date: Wed, 15 Jan 2025 18:45:58 +0800 Subject: [PATCH] opt: image view Signed-off-by: bggRGjQaUbCoE --- lib/common/skeleton/video_card_h.dart | 3 +- lib/common/skeleton/video_card_v.dart | 6 +-- lib/common/widgets/imageview.dart | 11 +++--- lib/common/widgets/network_img_layer.dart | 37 +++++++++---------- lib/pages/bangumi/widgets/bangumi_card_v.dart | 2 +- lib/pages/dynamics/widgets/video_panel.dart | 20 +++++----- lib/pages/live/view.dart | 4 +- lib/pages/live/widgets/live_item.dart | 2 +- lib/pages/live/widgets/live_item_follow.dart | 2 +- lib/pages/rcmd/view.dart | 4 +- 10 files changed, 44 insertions(+), 47 deletions(-) diff --git a/lib/common/skeleton/video_card_h.dart b/lib/common/skeleton/video_card_h.dart index 52701d04..e02b34b5 100644 --- a/lib/common/skeleton/video_card_h.dart +++ b/lib/common/skeleton/video_card_h.dart @@ -31,8 +31,7 @@ class VideoCardHSkeleton extends StatelessWidget { decoration: BoxDecoration( color: Theme.of(context).colorScheme.onInverseSurface, - borderRadius: - BorderRadius.circular(StyleString.imgRadius.x), + borderRadius: StyleString.mdRadius, ), ); }, diff --git a/lib/common/skeleton/video_card_v.dart b/lib/common/skeleton/video_card_v.dart index 64e7d252..89347232 100644 --- a/lib/common/skeleton/video_card_v.dart +++ b/lib/common/skeleton/video_card_v.dart @@ -16,9 +16,9 @@ class VideoCardVSkeleton extends StatelessWidget { builder: (context, boxConstraints) { return Container( decoration: BoxDecoration( - color: Theme.of(context).colorScheme.onInverseSurface, - borderRadius: - BorderRadius.circular(StyleString.imgRadius.x)), + color: Theme.of(context).colorScheme.onInverseSurface, + borderRadius: StyleString.mdRadius, + ), ); }, ), diff --git a/lib/common/widgets/imageview.dart b/lib/common/widgets/imageview.dart index 23d4748a..6857e700 100644 --- a/lib/common/widgets/imageview.dart +++ b/lib/common/widgets/imageview.dart @@ -1,5 +1,6 @@ import 'dart:math'; +import 'package:PiliPlus/common/constants.dart'; import 'package:PiliPlus/common/widgets/badge.dart'; import 'package:PiliPlus/common/widgets/network_img_layer.dart'; import 'package:PiliPlus/common/widgets/nine_grid_view.dart'; @@ -49,7 +50,7 @@ Widget imageview( } BorderRadius borderRadius(index) { if (picArr.length == 1) { - return BorderRadius.circular(12); + return StyleString.mdRadius; } final int row = picArr.length == 4 ? 2 : 3; return BorderRadius.only( @@ -57,27 +58,27 @@ Widget imageview( (index - row >= 0 || ((index - 1) >= 0 && (index - 1) % row < index % row)) ? 0 - : 12, + : 10, ), topRight: Radius.circular( (index - row >= 0 || ((index + 1) < picArr.length && (index + 1) % row > index % row)) ? 0 - : 12, + : 10, ), bottomLeft: Radius.circular( (index + row < picArr.length || ((index - 1) >= 0 && (index - 1) % row < index % row)) ? 0 - : 12, + : 10, ), bottomRight: Radius.circular( (index + row < picArr.length || ((index + 1) < picArr.length && (index + 1) % row > index % row)) ? 0 - : 12, + : 10, ), ); } diff --git a/lib/common/widgets/network_img_layer.dart b/lib/common/widgets/network_img_layer.dart index d23421bc..96ff3a2f 100644 --- a/lib/common/widgets/network_img_layer.dart +++ b/lib/common/widgets/network_img_layer.dart @@ -41,20 +41,17 @@ class NetworkImgLayer extends StatelessWidget { @override Widget build(BuildContext context) { - double radius = this.radius != null - ? this.radius! - : type == 'avatar' - ? 50 - : type == 'emote' - ? 0 - : StyleString.imgRadius.x; return src.isNullOrEmpty.not - ? radius != 0 - ? ClipRRect( - borderRadius: BorderRadius.circular(radius), - child: _buildImage(context), - ) - : _buildImage(context) + ? type == 'avatar' + ? ClipOval(child: _buildImage(context)) + : radius == 0 || type == 'emote' + ? _buildImage(context) + : ClipRRect( + borderRadius: BorderRadius.circular( + radius ?? StyleString.imgRadius.x, + ), + child: _buildImage(context), + ) : getPlaceHolder?.call() ?? placeholder(context); } @@ -99,15 +96,15 @@ class NetworkImgLayer extends StatelessWidget { return Container( width: width, height: height, + clipBehavior: Clip.antiAlias, decoration: BoxDecoration( + shape: type == 'avatar' ? BoxShape.circle : BoxShape.rectangle, color: Theme.of(context).colorScheme.onInverseSurface.withOpacity(0.4), - borderRadius: BorderRadius.circular( - type == 'avatar' - ? 50 - : type == 'emote' - ? 0 - : StyleString.imgRadius.x, - ), + borderRadius: type == 'avatar' || type == 'emote' || radius == 0 + ? null + : BorderRadius.circular( + radius ?? StyleString.imgRadius.x, + ), ), child: type == 'bg' ? const SizedBox() diff --git a/lib/pages/bangumi/widgets/bangumi_card_v.dart b/lib/pages/bangumi/widgets/bangumi_card_v.dart index 947ed645..fe9349a3 100644 --- a/lib/pages/bangumi/widgets/bangumi_card_v.dart +++ b/lib/pages/bangumi/widgets/bangumi_card_v.dart @@ -72,7 +72,7 @@ class BangumiCardV extends StatelessWidget { child: Column( children: [ ClipRRect( - borderRadius: const BorderRadius.all(StyleString.imgRadius), + borderRadius: StyleString.mdRadius, child: AspectRatio( aspectRatio: 0.75, child: LayoutBuilder(builder: (context, boxConstraints) { diff --git a/lib/pages/dynamics/widgets/video_panel.dart b/lib/pages/dynamics/widgets/video_panel.dart index 2a0e0f35..b341be82 100644 --- a/lib/pages/dynamics/widgets/video_panel.dart +++ b/lib/pages/dynamics/widgets/video_panel.dart @@ -110,16 +110,16 @@ Widget videoSeasonWidget(item, context, type, {floor = 1}) { padding: const EdgeInsets.fromLTRB(10, 0, 8, 8), clipBehavior: Clip.hardEdge, decoration: BoxDecoration( - gradient: const LinearGradient( - begin: Alignment.topCenter, - end: Alignment.bottomCenter, - colors: [ - Colors.transparent, - Colors.black54, - ], - ), - borderRadius: - BorderRadius.circular(StyleString.imgRadius.x)), + gradient: const LinearGradient( + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + colors: [ + Colors.transparent, + Colors.black54, + ], + ), + borderRadius: StyleString.mdRadius, + ), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, crossAxisAlignment: CrossAxisAlignment.end, diff --git a/lib/pages/live/view.dart b/lib/pages/live/view.dart index b5e57b76..746d885c 100644 --- a/lib/pages/live/view.dart +++ b/lib/pages/live/view.dart @@ -70,8 +70,8 @@ class _LivePageState extends State clipBehavior: Clip.hardEdge, margin: const EdgeInsets.only( left: StyleString.safeSpace, right: StyleString.safeSpace), - decoration: const BoxDecoration( - borderRadius: BorderRadius.all(StyleString.imgRadius), + decoration: BoxDecoration( + borderRadius: StyleString.mdRadius, ), child: refreshIndicator( onRefresh: () async { diff --git a/lib/pages/live/widgets/live_item.dart b/lib/pages/live/widgets/live_item.dart index 182b5ae1..0a35b06e 100644 --- a/lib/pages/live/widgets/live_item.dart +++ b/lib/pages/live/widgets/live_item.dart @@ -33,7 +33,7 @@ class LiveCardV extends StatelessWidget { child: Column( children: [ ClipRRect( - borderRadius: const BorderRadius.all(StyleString.imgRadius), + borderRadius: StyleString.mdRadius, child: AspectRatio( aspectRatio: StyleString.aspectRatio, child: LayoutBuilder(builder: (context, boxConstraints) { diff --git a/lib/pages/live/widgets/live_item_follow.dart b/lib/pages/live/widgets/live_item_follow.dart index 8836aeac..1df7e5a9 100644 --- a/lib/pages/live/widgets/live_item_follow.dart +++ b/lib/pages/live/widgets/live_item_follow.dart @@ -33,7 +33,7 @@ class LiveCardVFollow extends StatelessWidget { child: Column( children: [ ClipRRect( - borderRadius: const BorderRadius.all(StyleString.imgRadius), + borderRadius: StyleString.mdRadius, child: AspectRatio( aspectRatio: StyleString.aspectRatio, child: LayoutBuilder(builder: (context, boxConstraints) { diff --git a/lib/pages/rcmd/view.dart b/lib/pages/rcmd/view.dart index a19e7dcb..182ef65d 100644 --- a/lib/pages/rcmd/view.dart +++ b/lib/pages/rcmd/view.dart @@ -64,8 +64,8 @@ class _RcmdPageState extends State clipBehavior: Clip.hardEdge, margin: const EdgeInsets.only( left: StyleString.safeSpace, right: StyleString.safeSpace), - decoration: const BoxDecoration( - borderRadius: BorderRadius.all(StyleString.imgRadius), + decoration: BoxDecoration( + borderRadius: StyleString.mdRadius, ), child: refreshIndicator( onRefresh: () async {