diff --git a/lib/common/widgets/stat/danmu.dart b/lib/common/widgets/stat/danmu.dart index ee2ac19c..5ea9cb01 100644 --- a/lib/common/widgets/stat/danmu.dart +++ b/lib/common/widgets/stat/danmu.dart @@ -20,8 +20,7 @@ class StatDanMu extends StatelessWidget { return Row( children: [ Icon( - // CupertinoIcons.ellipses_bubble, - Icons.subtitles_sharp, + Icons.subtitles_outlined, size: 14, color: color, ), diff --git a/lib/common/widgets/stat/view.dart b/lib/common/widgets/stat/view.dart index c394aba6..4f2b3441 100644 --- a/lib/common/widgets/stat/view.dart +++ b/lib/common/widgets/stat/view.dart @@ -20,8 +20,7 @@ class StatView extends StatelessWidget { return Row( children: [ Icon( - // CupertinoIcons.play_rectangle, - Icons.play_circle_fill_outlined, + Icons.play_circle_outlined, size: 13, color: color, ), diff --git a/lib/common/widgets/video_card_h.dart b/lib/common/widgets/video_card_h.dart index 3ccac58d..1f80da02 100644 --- a/lib/common/widgets/video_card_h.dart +++ b/lib/common/widgets/video_card_h.dart @@ -122,7 +122,7 @@ class VideoContent extends StatelessWidget { Widget build(BuildContext context) { return Expanded( child: Padding( - padding: const EdgeInsets.fromLTRB(10, 4, 6, 2), + padding: const EdgeInsets.fromLTRB(10, 2, 6, 0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ @@ -130,8 +130,8 @@ class VideoContent extends StatelessWidget { Text( videoItem.title, textAlign: TextAlign.start, - style: TextStyle( - fontSize: Theme.of(context).textTheme.labelMedium!.fontSize, + style: const TextStyle( + fontSize: 13, fontWeight: FontWeight.w500, letterSpacing: 0.3, ), @@ -149,6 +149,7 @@ class VideoContent extends StatelessWidget { style: TextStyle( fontSize: 13, fontWeight: FontWeight.w500, + letterSpacing: 0.3, color: i['type'] == 'em' ? Theme.of(context).colorScheme.primary : Theme.of(context).colorScheme.onSurface, diff --git a/lib/common/widgets/video_card_v.dart b/lib/common/widgets/video_card_v.dart index b5707c4b..1a8c5df6 100644 --- a/lib/common/widgets/video_card_v.dart +++ b/lib/common/widgets/video_card_v.dart @@ -52,15 +52,12 @@ class VideoCardV extends StatelessWidget { }, child: Column( children: [ - Container( - clipBehavior: Clip.hardEdge, - decoration: const BoxDecoration( - borderRadius: BorderRadius.only( - topLeft: StyleString.imgRadius, - topRight: StyleString.imgRadius, - bottomLeft: StyleString.imgRadius, - bottomRight: StyleString.imgRadius, - ), + ClipRRect( + borderRadius: const BorderRadius.only( + topLeft: StyleString.imgRadius, + topRight: StyleString.imgRadius, + bottomLeft: StyleString.imgRadius, + bottomRight: StyleString.imgRadius, ), child: AspectRatio( aspectRatio: StyleString.aspectRatio, @@ -116,7 +113,7 @@ class VideoContent extends StatelessWidget { return Expanded( child: Padding( // 多列 - padding: const EdgeInsets.fromLTRB(4, 5, 6, 10), + padding: const EdgeInsets.fromLTRB(4, 5, 6, 6), // 单列 // padding: const EdgeInsets.fromLTRB(14, 10, 4, 8), child: Column( @@ -126,79 +123,63 @@ class VideoContent extends StatelessWidget { Text( videoItem.title, textAlign: TextAlign.start, - style: TextStyle( - fontSize: Theme.of(context).textTheme.labelMedium!.fontSize, + style: const TextStyle( + fontSize: 13, fontWeight: FontWeight.w500, letterSpacing: 0.3, ), maxLines: Get.find().crossAxisCount, overflow: TextOverflow.ellipsis, ), - SizedBox( - height: 18, - child: Row( - children: [ - if (videoItem.rcmdReason != null && - videoItem.rcmdReason.content != '') ...[ - Container( - padding: const EdgeInsets.fromLTRB(3, 1, 3, 1), + + Row( + children: [ + if (videoItem.rcmdReason != null && + videoItem.rcmdReason.content != '' || + videoItem.isFollowed == 1) ...[ + Container( + padding: const EdgeInsets.fromLTRB(3, 0, 3, 0), decoration: BoxDecoration( color: Theme.of(context) .colorScheme .primaryContainer .withOpacity(0.6), borderRadius: BorderRadius.circular(3)), - child: Text( - videoItem.rcmdReason.content, - style: TextStyle( - fontSize: - Theme.of(context).textTheme.labelSmall!.fontSize, - color: Theme.of(context).colorScheme.primary, - ), - ), - ), - const SizedBox(width: 4) - ] else if (videoItem.isFollowed == 1) ...[ - Container( - padding: const EdgeInsets.fromLTRB(3, 1, 3, 1), - decoration: BoxDecoration( - color: Theme.of(context) - .colorScheme - .primaryContainer - .withOpacity(0.6), - borderRadius: BorderRadius.circular(3)), - child: Text( - '已关注', - style: TextStyle( - fontSize: - Theme.of(context).textTheme.labelSmall!.fontSize, - color: Theme.of(context).colorScheme.primary, - ), - ), - ), - const SizedBox(width: 4) - ], - Expanded( - child: LayoutBuilder(builder: - (BuildContext context, BoxConstraints constraints) { - return SizedBox( - width: constraints.maxWidth, + child: Center( child: Text( - videoItem.owner.name, - maxLines: 1, + videoItem.rcmdReason != null && + videoItem.rcmdReason.content != '' + ? videoItem.rcmdReason.content + : '已关注', style: TextStyle( fontSize: Theme.of(context) .textTheme - .labelMedium! + .labelSmall! .fontSize, - color: Theme.of(context).colorScheme.outline, + color: Theme.of(context).colorScheme.primary, ), ), - ); - }), - ), + )), + const SizedBox(width: 4) ], - ), + Expanded( + child: LayoutBuilder(builder: + (BuildContext context, BoxConstraints constraints) { + return SizedBox( + width: constraints.maxWidth, + child: Text( + videoItem.owner.name, + maxLines: 1, + style: TextStyle( + fontSize: + Theme.of(context).textTheme.labelMedium!.fontSize, + color: Theme.of(context).colorScheme.outline, + ), + ), + ); + }), + ), + ], ), // Row( // children: [ diff --git a/lib/main.dart b/lib/main.dart index 330f9245..ce0793c1 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -34,6 +34,7 @@ class MyApp extends StatelessWidget { return GetMaterialApp( title: 'PiLiPaLa', theme: ThemeData( + fontFamily: 'HarmonyOS', colorScheme: lightDynamic ?? ColorScheme.fromSeed( seedColor: Colors.green, @@ -42,6 +43,7 @@ class MyApp extends StatelessWidget { useMaterial3: true, ), darkTheme: ThemeData( + fontFamily: 'HarmonyOS', colorScheme: darkDynamic ?? ColorScheme.fromSeed( seedColor: Colors.green, diff --git a/lib/pages/fav/widgets/item.dart b/lib/pages/fav/widgets/item.dart index 01737be5..54dbf5f6 100644 --- a/lib/pages/fav/widgets/item.dart +++ b/lib/pages/fav/widgets/item.dart @@ -76,9 +76,11 @@ class VideoContent extends StatelessWidget { Text( favFolderItem.title, textAlign: TextAlign.start, - style: TextStyle( - fontSize: Theme.of(context).textTheme.titleSmall!.fontSize, - fontWeight: FontWeight.w500), + style: const TextStyle( + fontSize: 13, + fontWeight: FontWeight.w500, + letterSpacing: 0.3, + ), ), Text( '${favFolderItem.mediaCount}个内容', diff --git a/lib/pages/favDetail/widget/fav_video_card.dart b/lib/pages/favDetail/widget/fav_video_card.dart index 953d04b7..2b4c2409 100644 --- a/lib/pages/favDetail/widget/fav_video_card.dart +++ b/lib/pages/favDetail/widget/fav_video_card.dart @@ -131,8 +131,8 @@ class VideoContent extends StatelessWidget { Text( videoItem.title, textAlign: TextAlign.start, - style: TextStyle( - fontSize: Theme.of(context).textTheme.labelMedium!.fontSize, + style: const TextStyle( + fontSize: 13, fontWeight: FontWeight.w500, letterSpacing: 0.3, ), diff --git a/lib/pages/follow/widgets/follow_item.dart b/lib/pages/follow/widgets/follow_item.dart index c1ac61a2..301b3e84 100644 --- a/lib/pages/follow/widgets/follow_item.dart +++ b/lib/pages/follow/widgets/follow_item.dart @@ -11,13 +11,16 @@ Widget followItem({item}) { leading: Hero( tag: heroTag, child: NetworkImgLayer( - width: 38, - height: 38, + width: 45, + height: 45, type: 'avatar', src: item.face, ), ), - title: Text(item.uname), + title: Text( + item.uname, + style: const TextStyle(fontSize: 14), + ), subtitle: Text( item.sign, maxLines: 1, diff --git a/lib/pages/history/widgets/item.dart b/lib/pages/history/widgets/item.dart index bddcb8b8..b5dc3ee3 100644 --- a/lib/pages/history/widgets/item.dart +++ b/lib/pages/history/widgets/item.dart @@ -59,7 +59,7 @@ class HistoryItem extends StatelessWidget { children: [ Padding( padding: const EdgeInsets.fromLTRB( - StyleString.cardSpace, 7, StyleString.cardSpace, 7), + StyleString.cardSpace, 5, StyleString.cardSpace, 5), child: LayoutBuilder( builder: (context, boxConstraints) { double width = @@ -121,12 +121,6 @@ class HistoryItem extends StatelessWidget { }, ), ), - Divider( - height: 1, - indent: 8, - endIndent: 12, - color: Theme.of(context).dividerColor.withOpacity(0.08), - ) ], ), ); @@ -148,8 +142,8 @@ class VideoContent extends StatelessWidget { Text( videoItem.title, textAlign: TextAlign.start, - style: TextStyle( - fontSize: Theme.of(context).textTheme.labelMedium!.fontSize, + style: const TextStyle( + fontSize: 13, fontWeight: FontWeight.w500, letterSpacing: 0.3, ), diff --git a/lib/pages/live/widgets/live_item.dart b/lib/pages/live/widgets/live_item.dart index 35d8e7ea..0e91c834 100644 --- a/lib/pages/live/widgets/live_item.dart +++ b/lib/pages/live/widgets/live_item.dart @@ -104,7 +104,7 @@ class LiveContent extends StatelessWidget { return Expanded( child: Padding( // 多列 - padding: const EdgeInsets.fromLTRB(4, 5, 6, 8), + padding: const EdgeInsets.fromLTRB(4, 5, 6, 6), child: Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.spaceBetween, @@ -112,15 +112,14 @@ class LiveContent extends StatelessWidget { Text( liveItem.title, textAlign: TextAlign.start, - style: TextStyle( - fontSize: Theme.of(context).textTheme.labelMedium!.fontSize, + style: const TextStyle( + fontSize: 13, fontWeight: FontWeight.w500, letterSpacing: 0.3, ), maxLines: 2, overflow: TextOverflow.ellipsis, ), - const SizedBox(height: 4), Row( children: [ const UpTag(), diff --git a/lib/pages/searchPanel/widgets/live_panel.dart b/lib/pages/searchPanel/widgets/live_panel.dart index c8038681..177085a8 100644 --- a/lib/pages/searchPanel/widgets/live_panel.dart +++ b/lib/pages/searchPanel/widgets/live_panel.dart @@ -12,8 +12,8 @@ Widget searchLivePanel(BuildContext context, ctr, list) { controller: ctr!.scrollController, gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( crossAxisCount: 2, - crossAxisSpacing: StyleString.cardSpace, - mainAxisSpacing: StyleString.cardSpace, + crossAxisSpacing: StyleString.cardSpace + 2, + mainAxisSpacing: StyleString.cardSpace + 3, mainAxisExtent: MediaQuery.of(context).size.width / 2 / StyleString.aspectRatio + 65, @@ -22,7 +22,7 @@ Widget searchLivePanel(BuildContext context, ctr, list) { itemBuilder: (context, index) { var i = list![index]; return Card( - elevation: 0.8, + elevation: 0, clipBehavior: Clip.hardEdge, shape: RoundedRectangleBorder( borderRadius: StyleString.mdRadius, @@ -32,40 +32,46 @@ Widget searchLivePanel(BuildContext context, ctr, list) { onTap: () {}, child: Column( children: [ - AspectRatio( - aspectRatio: StyleString.aspectRatio, - child: LayoutBuilder(builder: (context, boxConstraints) { - double maxWidth = boxConstraints.maxWidth; - double maxHeight = boxConstraints.maxHeight; - return Stack( - children: [ - Hero( - tag: Utils.makeHeroTag(i.roomid), - child: NetworkImgLayer( - // 指定图片尺寸 - // src: videoItem.pic + '@${(maxWidth * 2).toInt()}w', - src: i.cover + '@.webp', - type: 'emote', - width: maxWidth, - height: maxHeight, - ), - ), - Positioned( - left: 0, - right: 0, - bottom: 0, - child: AnimatedOpacity( - opacity: 1, - duration: const Duration(milliseconds: 200), - child: LiveStat( - online: i.online, - cateName: i.cateName, + ClipRRect( + borderRadius: const BorderRadius.only( + topLeft: StyleString.imgRadius, + topRight: StyleString.imgRadius, + bottomLeft: StyleString.imgRadius, + bottomRight: StyleString.imgRadius, + ), + child: AspectRatio( + aspectRatio: StyleString.aspectRatio, + child: LayoutBuilder(builder: (context, boxConstraints) { + double maxWidth = boxConstraints.maxWidth; + double maxHeight = boxConstraints.maxHeight; + return Stack( + children: [ + Hero( + tag: Utils.makeHeroTag(i.roomid), + child: NetworkImgLayer( + src: i.cover + '@.webp', + type: 'emote', + width: maxWidth, + height: maxHeight, ), ), - ), - ], - ); - }), + Positioned( + left: 0, + right: 0, + bottom: 0, + child: AnimatedOpacity( + opacity: 1, + duration: const Duration(milliseconds: 200), + child: LiveStat( + online: i.online, + cateName: i.cateName, + ), + ), + ), + ], + ); + }), + ), ), LiveContent(liveItem: i) ], @@ -84,7 +90,7 @@ class LiveContent extends StatelessWidget { Widget build(BuildContext context) { return Expanded( child: Padding( - padding: const EdgeInsets.fromLTRB(8, 8, 6, 7), + padding: const EdgeInsets.fromLTRB(4, 5, 6, 6), child: Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.spaceBetween, @@ -98,6 +104,7 @@ class LiveContent extends StatelessWidget { style: TextStyle( fontSize: 13, fontWeight: FontWeight.w500, + letterSpacing: 0.3, color: i['type'] == 'em' ? Theme.of(context).colorScheme.primary : Theme.of(context).colorScheme.onSurface, diff --git a/lib/pages/searchPanel/widgets/user_panel.dart b/lib/pages/searchPanel/widgets/user_panel.dart index 6bc9d014..918082bc 100644 --- a/lib/pages/searchPanel/widgets/user_panel.dart +++ b/lib/pages/searchPanel/widgets/user_panel.dart @@ -42,9 +42,8 @@ Widget searchUserPanel(BuildContext context, ctr, list) { children: [ Text( i!.uname, - style: TextStyle( - fontSize: - Theme.of(context).textTheme.titleMedium!.fontSize, + style: const TextStyle( + fontSize: 14, ), ), const SizedBox(width: 6), diff --git a/lib/pages/video/detail/introduction/view.dart b/lib/pages/video/detail/introduction/view.dart index 79e0695b..8b1a6380 100644 --- a/lib/pages/video/detail/introduction/view.dart +++ b/lib/pages/video/detail/introduction/view.dart @@ -126,7 +126,7 @@ class _VideoInfoState extends State with TickerProviderStateMixin { Widget build(BuildContext context) { return SliverPadding( padding: const EdgeInsets.only( - left: StyleString.safeSpace, right: StyleString.safeSpace, top: 15), + left: StyleString.safeSpace, right: StyleString.safeSpace, top: 13), sliver: SliverToBoxAdapter( child: !widget.loadingStatus || videoItem.isNotEmpty ? Column( @@ -149,12 +149,11 @@ class _VideoInfoState extends State with TickerProviderStateMixin { !widget.loadingStatus ? widget.videoDetail!.title : videoItem['title'], - style: Theme.of(context) - .textTheme - .titleMedium! - .copyWith( - letterSpacing: 0.5, - fontWeight: FontWeight.w500), + style: const TextStyle( + fontSize: 18, + letterSpacing: 0.3, + fontWeight: FontWeight.w500, + ), maxLines: 2, overflow: TextOverflow.ellipsis, ), @@ -274,7 +273,7 @@ class _VideoInfoState extends State with TickerProviderStateMixin { !widget.loadingStatus ? widget.videoDetail!.owner!.name : videoItem['owner'].name, - style: const TextStyle(fontSize: 12.5), + style: const TextStyle(fontSize: 13), ), const SizedBox(width: 10), Text( diff --git a/lib/pages/video/detail/introduction/widgets/intro_detail.dart b/lib/pages/video/detail/introduction/widgets/intro_detail.dart index c51ffdad..75bc9bd4 100644 --- a/lib/pages/video/detail/introduction/widgets/intro_detail.dart +++ b/lib/pages/video/detail/introduction/widgets/intro_detail.dart @@ -50,8 +50,11 @@ class IntroDetail extends StatelessWidget { children: [ Text( videoDetail!.title, - style: Theme.of(context).textTheme.titleMedium!.copyWith( - letterSpacing: 0.5, fontWeight: FontWeight.w500), + style: const TextStyle( + fontSize: 18, + letterSpacing: 0.5, + fontWeight: FontWeight.w500, + ), ), const SizedBox(height: 10), Row( diff --git a/lib/pages/video/detail/introduction/widgets/menu_row.dart b/lib/pages/video/detail/introduction/widgets/menu_row.dart index 2b3144af..4a9aef35 100644 --- a/lib/pages/video/detail/introduction/widgets/menu_row.dart +++ b/lib/pages/video/detail/introduction/widgets/menu_row.dart @@ -81,9 +81,7 @@ class MenuRow extends StatelessWidget { duration: const Duration(milliseconds: 200), child: Text( text!, - style: TextStyle( - fontSize: - Theme.of(context).textTheme.labelMedium?.fontSize), + style: const TextStyle(fontSize: 13), ), ), ], diff --git a/lib/pages/video/detail/reply/view.dart b/lib/pages/video/detail/reply/view.dart index 162eda21..b2521473 100644 --- a/lib/pages/video/detail/reply/view.dart +++ b/lib/pages/video/detail/reply/view.dart @@ -131,8 +131,18 @@ class _VideoReplyPanelState extends State floating: true, delegate: _MySliverPersistentHeaderDelegate( child: Container( - color: Theme.of(context).colorScheme.background, - padding: const EdgeInsets.fromLTRB(12, 6, 10, 6), + height: 45, + padding: const EdgeInsets.fromLTRB(12, 0, 6, 0), + decoration: BoxDecoration( + color: Theme.of(context).colorScheme.background, + border: Border( + bottom: BorderSide( + color: Theme.of(context) + .colorScheme + .outline + .withOpacity(0.1)), + ), + ), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ @@ -156,9 +166,11 @@ class _VideoReplyPanelState extends State child: TextButton.icon( onPressed: () => _videoReplyController.queryBySort(), - icon: const Icon(Icons.sort, size: 17), + icon: const Icon(Icons.sort, size: 15), label: Obx(() => Text( - _videoReplyController.sortTypeLabel.value)), + _videoReplyController.sortTypeLabel.value, + style: const TextStyle(fontSize: 12), + )), ), ) ], diff --git a/lib/pages/video/detail/reply/widgets/reply_item.dart b/lib/pages/video/detail/reply/widgets/reply_item.dart index fb618c5b..b0320d36 100644 --- a/lib/pages/video/detail/reply/widgets/reply_item.dart +++ b/lib/pages/video/detail/reply/widgets/reply_item.dart @@ -108,8 +108,7 @@ class ReplyItem extends StatelessWidget { replyItem!.member!.vip!['vipStatus'] > 0 ? Theme.of(context).colorScheme.primary : Theme.of(context).colorScheme.outline, - fontSize: - Theme.of(context).textTheme.titleSmall!.fontSize, + fontSize: 13, ), ), const SizedBox(width: 6), diff --git a/lib/pages/video/detail/replyReply/view.dart b/lib/pages/video/detail/replyReply/view.dart index d0e9a60f..fc086f59 100644 --- a/lib/pages/video/detail/replyReply/view.dart +++ b/lib/pages/video/detail/replyReply/view.dart @@ -81,7 +81,7 @@ class _VideoReplyReplyPanelState extends State { if (widget.source == 'videoDetail') Container( height: 45, - padding: const EdgeInsets.only(left: 14, right: 14), + padding: const EdgeInsets.only(left: 12, right: 2), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [