merge: 增加推荐剧单渐变背景

This commit is contained in:
Zhou Weidong committed 2026-10-22 21:52:20 +08:00
commit 86aa7e0f4f
4 files changed
+76 -8

No files matched your search

+5
View File
@@ -1270,3 +1270,8 @@ $ flutter test
- 继续观看全部入口可切到追剧页播放历史 tab;`flutter analyze`:No issues found。
- 用户区昵称与 UID 收紧为 4 间距,昵称列相对头像垂直居中;UID 12、复制图标 14。
- UID 行改用 GestureDetector 并锁定 16 高,昵称与 UID 间距 2、昵称行高 1.15,避免 Material 热区撑高;`flutter analyze`:No issues found。
## 2026-10-22 推荐剧单渐变背景
- 仅为推荐页「剧单」子页增加暖黑三段渐变和品牌橙径向光晕,推荐视频与全部短剧背景不变。
- 渐变复用「我的」页色值,光晕使用 `#26FF6B2C`;分区与卡片样式保持原样;`flutter analyze`:No issues found。
+1
View File
@@ -101,6 +101,7 @@ abstract final class AppColors {
static const mineIconSupport = Color(0xFFA78BFA);
static const mineIconLanguage = Color(0xFF22D3EE);
static const mineIconSettings = Color(0xFFA1A1AA);
static const recommendPlaylistGlow = Color(0x26FF6B2C);
/// 次级文字与列表 chevron。
static const textPrimary = Color(0xFFFFFFFF);
+45 -8
View File
@@ -68,14 +68,7 @@ class _RecommendPageState extends State<RecommendPage> {
),
_KeepAliveTab(
key: const PageStorageKey('recommend-tab-playlists'),
child: _withTopNavSpace(
RecommendSectionsView(
feedController: widget.feedController,
categories: categories,
onOpenDrama: _openDrama,
onMore: _handleMore,
),
),
child: _recommendPlaylists(categories),
),
_KeepAliveTab(
key: const PageStorageKey('recommend-tab-all'),
@@ -173,6 +166,50 @@ class _RecommendPageState extends State<RecommendPage> {
);
}
Widget _recommendPlaylists(CategoryController categories) {
return DecoratedBox(
key: const Key('recommend-playlist-surface'),
decoration: const BoxDecoration(
gradient: LinearGradient(
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
colors: [
AppColors.mineGradientTop,
AppColors.mineGradientMiddle,
AppColors.mineGradientBottom,
],
stops: [0, 0.4, 0.75],
),
),
child: Stack(
fit: StackFit.expand,
children: [
const DecoratedBox(
key: Key('recommend-playlist-glow'),
decoration: BoxDecoration(
gradient: RadialGradient(
center: Alignment(0, -0.95),
radius: 0.9,
colors: [
AppColors.recommendPlaylistGlow,
AppColors.transparent,
],
),
),
),
_withTopNavSpace(
RecommendSectionsView(
feedController: widget.feedController,
categories: categories,
onOpenDrama: _openDrama,
onMore: _handleMore,
),
),
],
),
);
}
void _selectTab(RecommendInnerTab tab) {
setState(() {
_tab = tab;
@@ -143,6 +143,31 @@ void main() {
expect(find.text('New This Week'), findsOneWidget);
expect(find.text('Costume Drama Awards'), findsOneWidget);
expect(find.byType(AppBottomNav), findsOneWidget);
final playlistSurface = tester.widget<DecoratedBox>(
find.byKey(const Key('recommend-playlist-surface')),
);
final playlistGradient =
(playlistSurface.decoration as BoxDecoration).gradient!
as LinearGradient;
expect(playlistGradient.begin, Alignment.topCenter);
expect(playlistGradient.end, Alignment.bottomCenter);
expect(playlistGradient.colors, const [
AppColors.mineGradientTop,
AppColors.mineGradientMiddle,
AppColors.mineGradientBottom,
]);
expect(playlistGradient.stops, const [0, 0.4, 0.75]);
final playlistGlow = tester.widget<DecoratedBox>(
find.byKey(const Key('recommend-playlist-glow')),
);
final glowGradient =
(playlistGlow.decoration as BoxDecoration).gradient! as RadialGradient;
expect(glowGradient.center, const Alignment(0, -0.95));
expect(glowGradient.radius, 0.9);
expect(glowGradient.colors, const [
AppColors.recommendPlaylistGlow,
AppColors.transparent,
]);
final sectionTitle = tester.widget<Text>(find.text("This Week's Hits"));
expect(sectionTitle.style?.fontSize, AppDimens.recommendSectionTitle);
expect(sectionTitle.style?.fontWeight, FontWeight.w700);