From 1efd62803a87562876cfb8a8d208640da6739b2d Mon Sep 17 00:00:00 2001 From: My-Responsitories <107370289+My-Responsitories@users.noreply.github.com> Date: Wed, 21 May 2025 02:16:01 +0800 Subject: [PATCH] opt: replace SizedBox with spacing (#863) --- .../widgets/video_card/video_card_v.dart | 17 ++++------- lib/pages/article/widgets/opus_content.dart | 29 ++++++++----------- lib/pages/episode_panel/view.dart | 10 +++---- .../search_panel/article/controller.dart | 5 +--- lib/pages/setting/pages/logs.dart | 6 ++-- lib/pages/video/introduction/pgc/view.dart | 15 ++++------ .../video/reply/widgets/reply_item_grpc.dart | 5 ++-- .../whisper_detail/widget/chat_item.dart | 7 ++--- 8 files changed, 35 insertions(+), 59 deletions(-) diff --git a/lib/common/widgets/video_card/video_card_v.dart b/lib/common/widgets/video_card/video_card_v.dart index e74f3e1f..a65b4477 100644 --- a/lib/common/widgets/video_card/video_card_v.dart +++ b/lib/common/widgets/video_card/video_card_v.dart @@ -177,8 +177,9 @@ class VideoCardV extends StatelessWidget { ), videoStat(context, theme), Row( + spacing: 2, children: [ - if (videoItem.goto == 'bangumi') ...[ + if (videoItem.goto == 'bangumi') PBadge( text: videoItem.bangumiBadge, isStack: false, @@ -186,18 +187,14 @@ class VideoCardV extends StatelessWidget { type: PBadgeType.line_primary, fontSize: 9, ), - const SizedBox(width: 2), - ], - if (videoItem.rcmdReason != null) ...[ + if (videoItem.rcmdReason != null) PBadge( text: videoItem.rcmdReason, isStack: false, size: PBadgeSize.small, type: PBadgeType.secondary, ), - const SizedBox(width: 2), - ], - if (videoItem.goto == 'picture') ...[ + if (videoItem.goto == 'picture') const PBadge( text: '动态', isStack: false, @@ -205,17 +202,13 @@ class VideoCardV extends StatelessWidget { type: PBadgeType.line_primary, fontSize: 9, ), - const SizedBox(width: 2), - ], - if (videoItem.isFollowed) ...[ + if (videoItem.isFollowed) const PBadge( text: '已关注', isStack: false, size: PBadgeSize.small, type: PBadgeType.secondary, ), - const SizedBox(width: 2), - ], Expanded( flex: 1, child: Text( diff --git a/lib/pages/article/widgets/opus_content.dart b/lib/pages/article/widgets/opus_content.dart index 8937b6c1..c7ef6ebd 100644 --- a/lib/pages/article/widgets/opus_content.dart +++ b/lib/pages/article/widgets/opus_content.dart @@ -274,6 +274,7 @@ class OpusContent extends StatelessWidget { padding: const EdgeInsets.all(8), child: switch (element.linkCard?.card?.type) { 'LINK_CARD_TYPE_UGC' => Row( + spacing: 10, children: [ NetworkImgLayer( radius: 6, @@ -281,7 +282,6 @@ class OpusContent extends StatelessWidget { height: 65, src: element.linkCard!.card!.ugc!.cover, ), - const SizedBox(width: 10), Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, @@ -309,6 +309,7 @@ class OpusContent extends StatelessWidget { ], ), 'LINK_CARD_TYPE_COMMON' => Row( + spacing: 10, children: [ NetworkImgLayer( radius: 6, @@ -316,7 +317,6 @@ class OpusContent extends StatelessWidget { height: 65, src: element.linkCard!.card!.common!.cover, ), - const SizedBox(width: 10), Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, @@ -346,6 +346,7 @@ class OpusContent extends StatelessWidget { ], ), 'LINK_CARD_TYPE_LIVE' => Row( + spacing: 10, children: [ NetworkImgLayer( radius: 6, @@ -353,7 +354,6 @@ class OpusContent extends StatelessWidget { height: 65, src: element.linkCard!.card!.live!.cover, ), - const SizedBox(width: 10), Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, @@ -384,6 +384,7 @@ class OpusContent extends StatelessWidget { ], ), 'LINK_CARD_TYPE_OPUS' => Row( + spacing: 10, children: [ NetworkImgLayer( radius: 6, @@ -391,7 +392,6 @@ class OpusContent extends StatelessWidget { height: 65, src: element.linkCard!.card!.opus!.cover, ), - const SizedBox(width: 10), Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, @@ -410,6 +410,7 @@ class OpusContent extends StatelessWidget { ], ), 'LINK_CARD_TYPE_VOTE' => Row( + spacing: 10, children: [ Container( decoration: BoxDecoration( @@ -426,7 +427,6 @@ class OpusContent extends StatelessWidget { color: colorScheme.onSurfaceVariant, ), ), - const SizedBox(width: 10), Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, @@ -445,6 +445,7 @@ class OpusContent extends StatelessWidget { ], ), 'LINK_CARD_TYPE_MUSIC' => Row( + spacing: 10, children: [ NetworkImgLayer( radius: 6, @@ -452,7 +453,6 @@ class OpusContent extends StatelessWidget { height: 65, src: element.linkCard!.card!.music!.cover, ), - const SizedBox(width: 10), Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, @@ -482,6 +482,7 @@ class OpusContent extends StatelessWidget { } }, child: Row( + spacing: 10, children: [ NetworkImgLayer( radius: 6, @@ -489,7 +490,6 @@ class OpusContent extends StatelessWidget { height: 65, src: e.cover, ), - const SizedBox(width: 10), Expanded( child: Column( crossAxisAlignment: @@ -694,20 +694,18 @@ Widget moduleBlockedItem( decoration: bgImg(), padding: const EdgeInsets.all(12), child: Row( + spacing: 8, children: [ - if (moduleBlocked.icon != null) ...[ - icon(42), - const SizedBox(width: 8), - ], + if (moduleBlocked.icon != null) icon(42), Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisSize: MainAxisSize.min, + spacing: 2, children: [ if (moduleBlocked.title?.isNotEmpty == true) Text(moduleBlocked.title!), - if (moduleBlocked.hintMessage?.isNotEmpty == true) ...[ - const SizedBox(height: 2), + if (moduleBlocked.hintMessage?.isNotEmpty == true) Text( moduleBlocked.hintMessage!, style: TextStyle( @@ -715,12 +713,10 @@ Widget moduleBlockedItem( color: theme.colorScheme.outline, ), ), - ], ], ), ), - if (moduleBlocked.button != null) ...[ - const SizedBox(width: 8), + if (moduleBlocked.button != null) btn( visualDensity: const VisualDensity(vertical: -3, horizontal: -4), shape: const RoundedRectangleBorder( @@ -728,7 +724,6 @@ Widget moduleBlockedItem( ), padding: const EdgeInsets.symmetric(horizontal: 10), ), - ], ], ), ); diff --git a/lib/pages/episode_panel/view.dart b/lib/pages/episode_panel/view.dart index 3719e3a0..51cb2470 100644 --- a/lib/pages/episode_panel/view.dart +++ b/lib/pages/episode_panel/view.dart @@ -408,8 +408,9 @@ class _EpisodePanelState extends CommonSlidePageState { ), child: Row( mainAxisAlignment: MainAxisAlignment.start, + spacing: 10, children: [ - if (cover?.isNotEmpty == true) ...[ + if (cover?.isNotEmpty == true) AspectRatio( aspectRatio: StyleString.aspectRatio, child: LayoutBuilder( @@ -444,17 +445,14 @@ class _EpisodePanelState extends CommonSlidePageState { ); }, ), - ), - const SizedBox(width: 10), - ] else if (isCurrentIndex) ...[ + ) + else if (isCurrentIndex) Image.asset( 'assets/images/live.png', color: primary, height: 12, semanticLabel: "正在播放:", ), - const SizedBox(width: 10), - ], Expanded( child: Column( mainAxisSize: MainAxisSize.min, diff --git a/lib/pages/search_panel/article/controller.dart b/lib/pages/search_panel/article/controller.dart index 308d0a57..6f9eca07 100644 --- a/lib/pages/search_panel/article/controller.dart +++ b/lib/pages/search_panel/article/controller.dart @@ -83,10 +83,9 @@ class SearchArticleController child: Column( mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, + spacing: 10, children: [ - const SizedBox(height: 10), const Text('排序', style: TextStyle(fontSize: 16)), - const SizedBox(height: 10), Wrap( spacing: 8, runSpacing: 8, @@ -115,9 +114,7 @@ class SearchArticleController ) .toList(), ), - const SizedBox(height: 20), const Text('分区', style: TextStyle(fontSize: 16)), - const SizedBox(height: 10), Wrap( spacing: 8, runSpacing: 8, diff --git a/lib/pages/setting/pages/logs.dart b/lib/pages/setting/pages/logs.dart index 9b1fd22a..de956a8b 100644 --- a/lib/pages/setting/pages/logs.dart +++ b/lib/pages/setting/pages/logs.dart @@ -74,7 +74,7 @@ class _LogsPageState extends State { } return l; }) - .where((dynamic l) => l.replaceAll("\n", "").trim().isNotEmpty) + .where((l) => l.replaceAll("\n", "").trim().isNotEmpty) .join("\n"); if (date != null || body != '') { result.add({'date': date, 'body': body, 'expand': false}); @@ -159,8 +159,10 @@ class _LogsPageState extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisSize: MainAxisSize.min, + spacing: 5, children: [ Row( + spacing: 10, children: [ Text( log['date'].toString(), @@ -171,7 +173,6 @@ class _LogsPageState extends State { .fontSize, ), ), - const SizedBox(width: 10), TextButton.icon( style: TextButton.styleFrom( tapTargetSize: MaterialTapTargetSize.shrinkWrap, @@ -195,7 +196,6 @@ class _LogsPageState extends State { ) ], ), - const SizedBox(height: 5), Card( elevation: 1, margin: EdgeInsets.zero, diff --git a/lib/pages/video/introduction/pgc/view.dart b/lib/pages/video/introduction/pgc/view.dart index c8cd1cba..d6e4626c 100644 --- a/lib/pages/video/introduction/pgc/view.dart +++ b/lib/pages/video/introduction/pgc/view.dart @@ -85,6 +85,7 @@ class _BangumiIntroPanelState extends State children: [ Row( crossAxisAlignment: CrossAxisAlignment.start, + spacing: 10, children: [ Stack( clipBehavior: Clip.none, @@ -121,7 +122,6 @@ class _BangumiIntroPanelState extends State ), ], ), - const SizedBox(width: 10), Expanded( child: GestureDetector( onTap: () => widget.showIntroDetail( @@ -135,6 +135,7 @@ class _BangumiIntroPanelState extends State children: [ Row( crossAxisAlignment: CrossAxisAlignment.start, + spacing: 20, children: [ Expanded( child: Text( @@ -146,7 +147,6 @@ class _BangumiIntroPanelState extends State overflow: TextOverflow.ellipsis, ), ), - const SizedBox(width: 20), Obx( () => FilledButton.tonal( style: FilledButton.styleFrom( @@ -204,6 +204,7 @@ class _BangumiIntroPanelState extends State ], ), Row( + spacing: 6, children: [ StatView( context: context, @@ -211,7 +212,6 @@ class _BangumiIntroPanelState extends State value: Utils.numFormat(bangumiItem.stat!['views']), ), - const SizedBox(width: 6), StatDanMu( context: context, theme: 'gray', @@ -219,9 +219,7 @@ class _BangumiIntroPanelState extends State bangumiItem.stat!['danmakus']), ), if (isLandscape) ...[ - const SizedBox(width: 6), areasAndPubTime(theme, bangumiItem), - const SizedBox(width: 6), newEpDesc(theme, bangumiItem), ] ], @@ -366,6 +364,7 @@ class _BangumiIntroPanelState extends State VideoDetailController videoDetailCtr, ) { return Row( + spacing: 8, children: [ Obx( () => ActionRowItem( @@ -376,7 +375,6 @@ class _BangumiIntroPanelState extends State text: bangumiItem.stat!['likes']!.toString(), ), ), - const SizedBox(width: 8), Obx( () => ActionRowItem( icon: const Icon(FontAwesomeIcons.b), @@ -386,7 +384,6 @@ class _BangumiIntroPanelState extends State text: bangumiItem.stat!['coins']!.toString(), ), ), - const SizedBox(width: 8), Obx( () => ActionRowItem( icon: const Icon(FontAwesomeIcons.heart), @@ -398,7 +395,6 @@ class _BangumiIntroPanelState extends State text: bangumiItem.stat!['favorite']!.toString(), ), ), - const SizedBox(width: 8), ActionRowItem( icon: const Icon(FontAwesomeIcons.comment), onTap: () { @@ -408,7 +404,6 @@ class _BangumiIntroPanelState extends State isLoading: false, text: bangumiItem.stat!['reply']!.toString(), ), - const SizedBox(width: 8), ActionRowItem( icon: const Icon(FontAwesomeIcons.share), onTap: () => bangumiIntroController.actionShareVideo(context), @@ -422,6 +417,7 @@ class _BangumiIntroPanelState extends State Widget areasAndPubTime(ThemeData theme, BangumiInfoModel bangumiItem) { return Row( + spacing: 6, children: [ Text( (bangumiItem.areas!.isNotEmpty @@ -432,7 +428,6 @@ class _BangumiIntroPanelState extends State color: theme.colorScheme.outline, ), ), - const SizedBox(width: 6), Text( bangumiItem.publish!['pub_time_show'], style: TextStyle( diff --git a/lib/pages/video/reply/widgets/reply_item_grpc.dart b/lib/pages/video/reply/widgets/reply_item_grpc.dart index 8477a6e4..034a514a 100644 --- a/lib/pages/video/reply/widgets/reply_item_grpc.dart +++ b/lib/pages/video/reply/widgets/reply_item_grpc.dart @@ -192,15 +192,16 @@ class ReplyItemGrpc extends StatelessWidget { child: Row( mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.center, + spacing: 12, children: [ lfAvtar(), - const SizedBox(width: 12), Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisSize: MainAxisSize.min, children: [ Row( mainAxisSize: MainAxisSize.min, + spacing: 6, children: [ Text( replyItem.member.name, @@ -212,13 +213,11 @@ class ReplyItemGrpc extends StatelessWidget { fontSize: 13, ), ), - const SizedBox(width: 6), Image.asset( 'assets/images/lv/lv${replyItem.member.isSeniorMember == 1 ? '6_s' : replyItem.member.level}.png', height: 11, semanticLabel: "等级:${replyItem.member.level}", ), - const SizedBox(width: 6), if (replyItem.mid == upMid) const PBadge( text: 'UP', diff --git a/lib/pages/whisper_detail/widget/chat_item.dart b/lib/pages/whisper_detail/widget/chat_item.dart index f667c827..4e42711a 100644 --- a/lib/pages/whisper_detail/widget/chat_item.dart +++ b/lib/pages/whisper_detail/widget/chat_item.dart @@ -269,6 +269,7 @@ class ChatItem extends StatelessWidget { padding: const EdgeInsets.all(12), child: Column( crossAxisAlignment: CrossAxisAlignment.start, + spacing: 6, children: [ Text( content['main_title'], @@ -279,8 +280,7 @@ class ChatItem extends StatelessWidget { fontWeight: FontWeight.bold, ), ), - for (var i in content['sub_cards']) ...[ - const SizedBox(height: 6), + for (var i in content['sub_cards']) GestureDetector( onTap: () async { RegExp bvRegex = @@ -309,13 +309,13 @@ class ChatItem extends StatelessWidget { } }, child: Row( + spacing: 6, children: [ NetworkImgLayer( width: 130, height: 130 * 9 / 16, src: i['cover_url'], ), - const SizedBox(width: 6), Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, @@ -354,7 +354,6 @@ class ChatItem extends StatelessWidget { ], ), ), - ], ], ), ),