feat(reward): 新增客户端奖励中心
This commit is contained in:
1 parent
67670d46b1
commit
bea08110c9
68 files changed
+3987
-332
No files matched your search
@@ -26,7 +26,7 @@ const double _sheetRadius = 20;
|
||||
const double _pageHorizontal = 20;
|
||||
const double _tabGap = 20;
|
||||
const double _posterWidth = 86;
|
||||
const double _posterRadius = 8;
|
||||
const double _posterRadius = AppDimens.coverRadius;
|
||||
const double _relatedWidth = 104;
|
||||
const double _relatedGap = 10;
|
||||
const int _synopsisLines = 3;
|
||||
@@ -457,7 +457,7 @@ class _DramaInfoSheetState extends State<DramaInfoSheet> {
|
||||
widget.onOpenRelated?.call(drama);
|
||||
},
|
||||
child: ClipRRect(
|
||||
borderRadius: BorderRadius.circular(10),
|
||||
borderRadius: BorderRadius.circular(AppDimens.coverRadius),
|
||||
child: SizedBox(
|
||||
width: _relatedWidth,
|
||||
child: AspectRatio(
|
||||
|
||||
@@ -8,6 +8,7 @@ import '../../../core/data/models/drama.dart';
|
||||
import '../../../core/data/models/locale_text.dart';
|
||||
import '../../../core/formatting/localized_content.dart';
|
||||
import '../../../core/theme/app_colors.dart';
|
||||
import '../../../core/widgets/app_press_scale.dart';
|
||||
import '../../../l10n/app_localizations.dart';
|
||||
import 'expandable_synopsis.dart';
|
||||
import 'interaction_rail.dart';
|
||||
@@ -220,7 +221,7 @@ class HomeFeedWatchAllBar extends StatelessWidget {
|
||||
child: InkWell(
|
||||
key: const Key('home-feed-full-series'),
|
||||
onTap: onTap,
|
||||
child: _content(l10n),
|
||||
child: AppPressScale(child: _content(l10n)),
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
@@ -7,8 +7,12 @@ import '../../../core/theme/app_colors.dart';
|
||||
const double _toggleSize = 68;
|
||||
const double _iconSize = 36;
|
||||
|
||||
/// 播放/暂停压在画面上,垫一层半透明深色圆底保证亮画面下也能看见。
|
||||
const Color _toggleBackground = Color(0x66000000);
|
||||
/// 播放/暂停压在画面上,垫一层半透明玻璃圆面保证亮画面下也能看见。
|
||||
const RadialGradient _toggleGradient = RadialGradient(
|
||||
center: Alignment(-0.35, -0.4),
|
||||
radius: 0.9,
|
||||
colors: [Color(0x80FFFFFF), Color(0x52000000), Color(0x70000000)],
|
||||
);
|
||||
const List<Shadow> _iconShadows = [
|
||||
Shadow(color: AppColors.shadow, blurRadius: 12),
|
||||
];
|
||||
@@ -31,18 +35,23 @@ class PlayerCenterToggle extends StatelessWidget {
|
||||
label: playing ? 'Pause' : 'Play',
|
||||
child: GestureDetector(
|
||||
onTap: onTap,
|
||||
child: Container(
|
||||
child: SizedBox(
|
||||
width: _toggleSize,
|
||||
height: _toggleSize,
|
||||
decoration: const BoxDecoration(
|
||||
color: _toggleBackground,
|
||||
shape: BoxShape.circle,
|
||||
),
|
||||
child: Icon(
|
||||
playing ? Icons.pause_rounded : Icons.play_arrow_rounded,
|
||||
color: AppColors.onPrimary,
|
||||
size: _iconSize,
|
||||
shadows: _iconShadows,
|
||||
child: DecoratedBox(
|
||||
key: const Key('player-center-toggle-surface'),
|
||||
decoration: const BoxDecoration(
|
||||
shape: BoxShape.circle,
|
||||
gradient: _toggleGradient,
|
||||
),
|
||||
child: Center(
|
||||
child: Icon(
|
||||
playing ? Icons.pause_rounded : Icons.play_arrow_rounded,
|
||||
color: AppColors.onPrimary,
|
||||
size: _iconSize,
|
||||
shadows: _iconShadows,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
@@ -10,6 +10,7 @@ import '../../../core/data/services/catalog_controller.dart';
|
||||
import '../../../core/formatting/localized_content.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 'expandable_synopsis.dart';
|
||||
import 'player_center_toggle.dart';
|
||||
@@ -389,44 +390,46 @@ class PlayerPlaybackOverlay extends StatelessWidget {
|
||||
// 选集条给一层浅底色:视频画面亮时纯文字不好认,也顺带标出可点区域。
|
||||
child: Material(
|
||||
key: const Key('player-episodes-pill'),
|
||||
color: AppColors.textPrimary.withValues(alpha: 0.14),
|
||||
color: AppColors.glassSurface,
|
||||
borderRadius: BorderRadius.circular(8),
|
||||
clipBehavior: Clip.antiAlias,
|
||||
child: InkWell(
|
||||
key: const Key('player-episodes'),
|
||||
onTap: actions.onEpisodes,
|
||||
borderRadius: BorderRadius.circular(8),
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.symmetric(
|
||||
horizontal: _bottomActionInset,
|
||||
),
|
||||
child: SizedBox(
|
||||
height: _bottomActionHeight,
|
||||
child: Row(
|
||||
children: [
|
||||
Expanded(
|
||||
child: Text(
|
||||
'${data.l10n.episodes} · '
|
||||
'${data.l10n.allEpisodesBadge(data.totalEpisodes)} · '
|
||||
'${data.l10n.freeWatch}',
|
||||
maxLines: 1,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
style: const TextStyle(
|
||||
color: AppColors.onPrimary,
|
||||
fontSize: 13.5,
|
||||
fontWeight: FontWeight.w400,
|
||||
shadows: _playerTextShadows,
|
||||
child: AppPressScale(
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.symmetric(
|
||||
horizontal: _bottomActionInset,
|
||||
),
|
||||
child: SizedBox(
|
||||
height: _bottomActionHeight,
|
||||
child: Row(
|
||||
children: [
|
||||
Expanded(
|
||||
child: Text(
|
||||
'${data.l10n.episodes} · '
|
||||
'${data.l10n.allEpisodesBadge(data.totalEpisodes)} · '
|
||||
'${data.l10n.freeWatch}',
|
||||
maxLines: 1,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
style: const TextStyle(
|
||||
color: AppColors.onPrimary,
|
||||
fontSize: 13.5,
|
||||
fontWeight: FontWeight.w400,
|
||||
shadows: _playerTextShadows,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
const SizedBox(width: 8),
|
||||
const Icon(
|
||||
Icons.keyboard_arrow_up_rounded,
|
||||
color: AppColors.onPrimary,
|
||||
size: 18,
|
||||
shadows: _playerTextShadows,
|
||||
),
|
||||
],
|
||||
const SizedBox(width: 8),
|
||||
const Icon(
|
||||
Icons.keyboard_arrow_up_rounded,
|
||||
color: AppColors.onPrimary,
|
||||
size: 18,
|
||||
shadows: _playerTextShadows,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
Reference in new issue
Block a user