feat(reward): 新增客户端奖励中心

This commit is contained in:
Zhou Weidong committed 2026-11-13 13:43:38 +08:00
1 parent 67670d46b1
commit bea08110c9
68 files changed
+3987 -332

No files matched your search

+1 -1
View File
@@ -3,7 +3,7 @@
import 'package:flutter/foundation.dart';
/// 「我的」页与根导航之间的返回动作。
enum MyPageAction { home, recommend, following, mine, resume }
enum MyPageAction { home, recommend, reward, following, mine, resume }
/// 「我的」页可进入的功能目的地。
enum MineDestination {
+1
View File
@@ -333,6 +333,7 @@ class _MyPageState extends State<MyPage> {
MyPageAction _actionOf(AppRootTab tab) => switch (tab) {
AppRootTab.home => MyPageAction.home,
AppRootTab.recommend => MyPageAction.recommend,
AppRootTab.reward => MyPageAction.reward,
AppRootTab.following => MyPageAction.following,
AppRootTab.mine => MyPageAction.mine,
};
+15 -12
View File
@@ -4,6 +4,7 @@ import 'package:flutter/material.dart';
import '../../../core/theme/app_colors.dart';
import '../../../core/theme/app_dimens.dart';
import '../../../core/widgets/app_press_scale.dart';
import '../../../l10n/app_localizations.dart';
import '../mine_types.dart';
@@ -31,7 +32,7 @@ class MineActionGrid extends StatelessWidget {
key: const Key('mine-menu'),
decoration: BoxDecoration(
color: AppColors.mineGridSurface,
border: Border.all(color: AppColors.contentBorder),
border: Border.all(color: AppColors.glassHairline),
borderRadius: BorderRadius.circular(AppDimens.mineGridRadius),
),
child: ClipRRect(
@@ -176,16 +177,18 @@ class _MineActionCell extends StatelessWidget {
child: InkWell(
key: item.key,
onTap: item.onTap,
child: Semantics(
button: true,
label: item.label,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
_iconSurface(),
const SizedBox(height: AppDimens.spaceSm),
_label(),
],
child: AppPressScale(
child: Semantics(
button: true,
label: item.label,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
_iconSurface(),
const SizedBox(height: AppDimens.spaceSm),
_label(),
],
),
),
),
),
@@ -208,7 +211,7 @@ class _MineActionCell extends StatelessWidget {
],
),
shape: BoxShape.circle,
border: Border.all(color: AppColors.glassBorder),
border: Border.all(color: AppColors.glassHairline),
boxShadow: [
const BoxShadow(
color: AppColors.shadowSoft,
@@ -123,7 +123,7 @@ class MineContinueWatching extends StatelessWidget {
Positioned.fill(
child: ClipRRect(
borderRadius: BorderRadius.circular(
AppDimens.homeCardRadius,
AppDimens.coverRadius,
),
child: RemoteImage(
record.dramaCover ?? '',
+13 -10
View File
@@ -4,6 +4,7 @@ import 'package:flutter/material.dart';
import '../../../core/theme/app_colors.dart';
import '../../../core/theme/app_dimens.dart';
import '../../../core/widgets/app_press_scale.dart';
import '../../../l10n/app_localizations.dart';
const double _vipMaxTextScale = 1.15;
@@ -28,16 +29,18 @@ class MineVipBanner extends StatelessWidget {
clipBehavior: Clip.antiAlias,
child: InkWell(
onTap: onOpen,
child: MediaQuery.withClampedTextScaling(
maxScaleFactor: _vipMaxTextScale,
child: Stack(
children: [
const Positioned.fill(child: _VipAmbientGlow()),
Padding(
padding: const EdgeInsets.all(AppDimens.mineVipPadding),
child: _VipContent(l10n: l10n, onOpen: onOpen),
),
],
child: AppPressScale(
child: MediaQuery.withClampedTextScaling(
maxScaleFactor: _vipMaxTextScale,
child: Stack(
children: [
const Positioned.fill(child: _VipAmbientGlow()),
Padding(
padding: const EdgeInsets.all(AppDimens.mineVipPadding),
child: _VipContent(l10n: l10n, onOpen: onOpen),
),
],
),
),
),
),