fix(player): 收紧推荐页互动栏间距
This commit is contained in:
1 parent
d3dbc9f8dc
commit
4c3acb047c
5 files changed
+34
-32
No files matched your search
@@ -273,7 +273,6 @@ class _HomeFeedOverlayState extends State<HomeFeedOverlay> {
|
||||
onSave: widget.onSave,
|
||||
onLike: widget.onLike,
|
||||
onComments: widget.onComments,
|
||||
onShare: widget.onShare,
|
||||
onEpisodes: widget.onEpisodes ?? widget.onOpenFullPlayer,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -305,7 +305,6 @@ class HomeFeedActionRail extends StatelessWidget {
|
||||
required this.onSave,
|
||||
required this.onLike,
|
||||
required this.onComments,
|
||||
required this.onShare,
|
||||
required this.onEpisodes,
|
||||
this.favoriteCount,
|
||||
this.likeCount,
|
||||
@@ -320,13 +319,13 @@ class HomeFeedActionRail extends StatelessWidget {
|
||||
final VoidCallback onSave;
|
||||
final VoidCallback onLike;
|
||||
final VoidCallback onComments;
|
||||
final VoidCallback onShare;
|
||||
final VoidCallback onEpisodes;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final l10n = AppLocalizations.of(context)!;
|
||||
return InteractionRail(
|
||||
itemGap: 14,
|
||||
items: [
|
||||
InteractionRailItem(
|
||||
key: const Key('rail-save'),
|
||||
@@ -337,14 +336,6 @@ class HomeFeedActionRail extends StatelessWidget {
|
||||
selected: saved,
|
||||
onTap: onSave,
|
||||
),
|
||||
InteractionRailItem(
|
||||
key: const Key('rail-comments'),
|
||||
asset: 'assets/icon/rail/rail_comment.png',
|
||||
label: l10n.comments,
|
||||
count: commentCount,
|
||||
countKey: const Key('rail-comments-count'),
|
||||
onTap: onComments,
|
||||
),
|
||||
InteractionRailItem(
|
||||
key: const Key('rail-like'),
|
||||
asset: 'assets/icon/rail/rail_like.png',
|
||||
@@ -356,10 +347,12 @@ class HomeFeedActionRail extends StatelessWidget {
|
||||
onTap: onLike,
|
||||
),
|
||||
InteractionRailItem(
|
||||
key: const Key('rail-share'),
|
||||
asset: 'assets/icon/rail/rail_share.png',
|
||||
label: l10n.share,
|
||||
onTap: onShare,
|
||||
key: const Key('rail-comments'),
|
||||
asset: 'assets/icon/rail/rail_comment.png',
|
||||
label: l10n.comments,
|
||||
count: commentCount,
|
||||
countKey: const Key('rail-comments-count'),
|
||||
onTap: onComments,
|
||||
),
|
||||
InteractionRailItem(
|
||||
key: const Key('rail-episodes'),
|
||||
|
||||
@@ -7,7 +7,7 @@ import '../../../core/theme/app_colors.dart';
|
||||
|
||||
const double _buttonSize = 44;
|
||||
const double _iconSize = 32;
|
||||
const double _itemGap = 24;
|
||||
const double _defaultItemGap = 24;
|
||||
|
||||
/// 互动栏单项:图标、计数与点击。
|
||||
class InteractionRailItem {
|
||||
@@ -36,9 +36,14 @@ class InteractionRailItem {
|
||||
|
||||
/// 播放页与首页 feed 共用的右侧互动栏:收藏/评论/喜欢/分享。
|
||||
class InteractionRail extends StatelessWidget {
|
||||
const InteractionRail({super.key, required this.items});
|
||||
const InteractionRail({
|
||||
super.key,
|
||||
required this.items,
|
||||
this.itemGap = _defaultItemGap,
|
||||
});
|
||||
|
||||
final List<InteractionRailItem> items;
|
||||
final double itemGap;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
@@ -46,7 +51,7 @@ class InteractionRail extends StatelessWidget {
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
for (var index = 0; index < items.length; index++) ...[
|
||||
if (index > 0) const SizedBox(height: _itemGap),
|
||||
if (index > 0) SizedBox(height: itemGap),
|
||||
_RailButton(item: items[index]),
|
||||
],
|
||||
],
|
||||
|
||||
@@ -346,7 +346,7 @@ void main() {
|
||||
);
|
||||
expect(saveImage.color, AppColors.onPrimary);
|
||||
expect(find.byKey(const Key('rail-comments')), findsOneWidget);
|
||||
expect(find.byKey(const Key('rail-share')), findsOneWidget);
|
||||
expect(find.byKey(const Key('rail-share')), findsNothing);
|
||||
expect(
|
||||
tester.widget<Text>(find.byKey(const Key('rail-comments-count'))).data,
|
||||
'12',
|
||||
@@ -364,19 +364,6 @@ void main() {
|
||||
.assetName,
|
||||
'assets/icon/rail/rail_comment.png',
|
||||
);
|
||||
expect(
|
||||
(tester
|
||||
.widget<Image>(
|
||||
find.descendant(
|
||||
of: find.byKey(const Key('rail-share')),
|
||||
matching: find.byType(Image),
|
||||
),
|
||||
)
|
||||
.image
|
||||
as AssetImage)
|
||||
.assetName,
|
||||
'assets/icon/rail/rail_share.png',
|
||||
);
|
||||
expect(find.byKey(const Key('rail-episodes')), findsOneWidget);
|
||||
expect(
|
||||
find.descendant(
|
||||
@@ -385,6 +372,13 @@ void main() {
|
||||
),
|
||||
findsOneWidget,
|
||||
);
|
||||
final saveRect = tester.getRect(find.byKey(const Key('rail-save')));
|
||||
final likeRect = tester.getRect(find.byKey(const Key('rail-like')));
|
||||
final commentsRect = tester.getRect(find.byKey(const Key('rail-comments')));
|
||||
final episodesRect = tester.getRect(find.byKey(const Key('rail-episodes')));
|
||||
expect(likeRect.top - saveRect.bottom, closeTo(14, 0.1));
|
||||
expect(commentsRect.top - likeRect.bottom, closeTo(14, 0.1));
|
||||
expect(episodesRect.top - commentsRect.bottom, closeTo(14, 0.1));
|
||||
expect(
|
||||
tester.getRect(find.byKey(const Key('home-feed-action-rail'))).right,
|
||||
closeTo(
|
||||
|
||||
@@ -1351,6 +1351,17 @@ void main() {
|
||||
expect(shareImage.width, 32);
|
||||
expect(shareImage.height, 32);
|
||||
expect(shareImage.colorBlendMode, BlendMode.srcIn);
|
||||
final saveRect = tester.getRect(find.byKey(const Key('player-rail-save')));
|
||||
final commentsRect = tester.getRect(
|
||||
find.byKey(const Key('player-rail-comments')),
|
||||
);
|
||||
final likeRect = tester.getRect(find.byKey(const Key('player-rail-like')));
|
||||
final shareRect = tester.getRect(
|
||||
find.byKey(const Key('player-rail-share')),
|
||||
);
|
||||
expect(commentsRect.top - saveRect.bottom, closeTo(24, 0.1));
|
||||
expect(likeRect.top - commentsRect.bottom, closeTo(24, 0.1));
|
||||
expect(shareRect.top - likeRect.bottom, closeTo(24, 0.1));
|
||||
|
||||
final saveButton = tester.widget<IconButton>(
|
||||
find.descendant(
|
||||
|
||||
Reference in new issue
Block a user