From 8e599f5a862a1b9ef126959deeb5780311479b2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9E=97=E9=94=8B?= <2535831261@qq.com> Date: Tue, 28 Jul 2026 18:02:40 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E8=A7=86=E9=A2=91=E6=92=AD?= =?UTF-8?q?=E6=94=BEUI=20=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/images/image_video_icon.png | Bin 0 -> 3256 bytes .../scan_qrcode/pages/page_record_list.dart | 60 +++++++++++------- lib/gen/assets.gen.dart | 5 ++ lib/shared/widgets/app_bar.dart | 9 ++- 4 files changed, 49 insertions(+), 25 deletions(-) create mode 100644 assets/images/image_video_icon.png diff --git a/assets/images/image_video_icon.png b/assets/images/image_video_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..1b332acd0dde978c091f1b414360735d63ef24d5 GIT binary patch literal 3256 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 '), + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: TextStyle( + color: Colors.white, + fontSize: 15.sp, + fontWeight: FontWeight.w500, + ), + ), + ), body: SafeArea( top: false, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Padding( - padding: EdgeInsets.fromLTRB(12.w, 12.h, 12.w, 4.h), - child: Text( - breadcrumbs.join(' > '), - maxLines: 1, - overflow: TextOverflow.ellipsis, - style: TextStyle( - fontSize: 14.sp, - height: 1.2, - color: const Color(0xFF30343A), - fontWeight: FontWeight.w700, - ), - ), - ), + SizedBox(height: 4.h), Expanded( child: visibleItems.isEmpty ? const AppEmptyView(message: '暂无录像内容') @@ -196,7 +197,7 @@ class _DirectoryCard extends StatelessWidget { borderRadius: BorderRadius.circular(6.r), child: Container( constraints: BoxConstraints(minHeight: 72.h), - padding: EdgeInsets.fromLTRB(12.w, 12.h, 14.w, 12.h), + padding: EdgeInsets.fromLTRB(20.w, 12.h, 14.w, 12.h), child: Row( children: [ Expanded( @@ -230,10 +231,22 @@ class _DirectoryCard extends StatelessWidget { ), ), SizedBox(width: 12.w), - Icon( - Icons.chevron_right, - size: 20.r, - color: const Color(0xFF9AA3AF), + Row( + children: [ + // Text( + // '视频', + // style: TextStyle( + // fontSize: 14.sp, + // color: const Color(0xFF358BFE), + // fontWeight: FontWeight.w600, + // ), + // ), + Icon( + Icons.chevron_right, + size: 20.r, + color: const Color(0xFF9AA3AF), + ), + ], ), ], ), @@ -368,10 +381,9 @@ class _VideoThumbnailState extends State<_VideoThumbnail> { color: Colors.black.withValues(alpha: 0.35), shape: BoxShape.circle, ), - child: Icon( - Icons.play_arrow_rounded, - size: 22.r, - color: Colors.white, + child: Image( + image: AssetImage(Assets.images.imageVideoIcon.path), + fit: BoxFit.cover, ), ), ), diff --git a/lib/gen/assets.gen.dart b/lib/gen/assets.gen.dart index 3ce94ee..1d2179d 100644 --- a/lib/gen/assets.gen.dart +++ b/lib/gen/assets.gen.dart @@ -80,6 +80,10 @@ class $AssetsImagesGen { AssetGenImage get imageTeamVsBg => const AssetGenImage('assets/images/image_team_vs_bg.png'); + /// File path: assets/images/image_video_icon.png + AssetGenImage get imageVideoIcon => + const AssetGenImage('assets/images/image_video_icon.png'); + /// File path: assets/images/image_vs.png AssetGenImage get imageVs => const AssetGenImage('assets/images/image_vs.png'); @@ -100,6 +104,7 @@ class $AssetsImagesGen { imageScanQrcode, imageStart, imageTeamVsBg, + imageVideoIcon, imageVs, ]; } diff --git a/lib/shared/widgets/app_bar.dart b/lib/shared/widgets/app_bar.dart index a04eed1..5af0981 100644 --- a/lib/shared/widgets/app_bar.dart +++ b/lib/shared/widgets/app_bar.dart @@ -14,6 +14,8 @@ class AppPageBar extends StatelessWidget implements PreferredSizeWidget { this.backgroundImage, this.onBack, this.actions, + this.centerTitle = true, + this.titleSpacing, }); final String title; @@ -22,6 +24,10 @@ class AppPageBar extends StatelessWidget implements PreferredSizeWidget { final VoidCallback? onBack; final List? actions; + /// 标题是否居中;false 时左对齐,紧随返回按钮。 + final bool centerTitle; + final double? titleSpacing; + @override Size get preferredSize => const Size.fromHeight(kToolbarHeight); @@ -33,7 +39,8 @@ class AppPageBar extends StatelessWidget implements PreferredSizeWidget { backgroundColor: Colors.transparent, elevation: 0, scrolledUnderElevation: 0, - centerTitle: true, + centerTitle: centerTitle, + titleSpacing: titleSpacing, systemOverlayStyle: SystemUiOverlayStyle.light, flexibleSpace: SizedBox.expand( child: Image.asset(