This commit is contained in:
sion
2026-04-07 01:05:05 +08:00
parent edad10ff06
commit 5ca1274607
83 changed files with 1561 additions and 1241 deletions

View File

@@ -6,12 +6,12 @@ import '../../../core/theme/app_theme.dart';
import '../../../core/theme/app_theme_extension.dart';
import '../../../core/storage/local_storage.dart';
/// 引导页数据模型
/// 引導頁數據模型
class _OnboardingItem {
final String title;
final String description;
final IconData? icon; // 图标(二一)
final String? imagePath; // 片路(二一)
final IconData? icon; // 圖標(二一)
final String? imagePath; // 片路(二一)
final List<Color> gradientColors;
const _OnboardingItem({
@@ -23,7 +23,7 @@ class _OnboardingItem {
});
}
/// 首次启动引导页
/// 首次啟動引導頁
class OnboardingPage extends StatefulWidget {
final VoidCallback onComplete;
@@ -39,27 +39,27 @@ class _OnboardingPageState extends State<OnboardingPage> {
final _items = const [
_OnboardingItem(
title: '实时行情',
description: '全球市行情实时更新,把握每一个投资机会',
imagePath: 'assets/images/onboarding_1.png', // 替换为你的
title: '實時行情',
description: '全球市行情實時更新,把握每一個投資機會',
imagePath: 'assets/images/onboarding_1.png', // 替換為你的
gradientColors: [AppColorScheme.darkPrimary, AppColorScheme.darkPrimaryContainer],
),
_OnboardingItem(
title: '交易',
description: '风险体验真实交易,学习投资策略',
imagePath: 'assets/images/onboarding_2.png', // 替换为你的
title: '交易',
description: '風險體驗真實交易,學習投資策略',
imagePath: 'assets/images/onboarding_2.png', // 替換為你的
gradientColors: [AppColorScheme.darkTertiary, AppColorScheme.darkTertiaryContainer],
),
_OnboardingItem(
title: '资产管理',
description: '清晰的资产概览,轻松管理你的投资组',
imagePath: 'assets/images/onboarding_3.png', // 替换为你的
title: '資產管理',
description: '清晰的資產概覽,輕鬆管理你的投資組',
imagePath: 'assets/images/onboarding_3.png', // 替換為你的
gradientColors: [AppColorScheme.darkSecondary, AppColorScheme.darkSecondaryFixed],
),
_OnboardingItem(
title: '安全可靠',
description: '数据加密存,保你的私安全',
imagePath: 'assets/images/onboarding_4.png', // 替换为你的
description: '數據加密存,保你的私安全',
imagePath: 'assets/images/onboarding_4.png', // 替換為你的
gradientColors: [AppColorScheme.darkPrimaryFixed, AppColorScheme.darkPrimaryFixedDim],
),
];
@@ -97,7 +97,7 @@ class _OnboardingPageState extends State<OnboardingPage> {
body: SafeArea(
child: Column(
children: [
// 部跳过按钮
// 部跳過按鈕
Padding(
padding: const EdgeInsets.symmetric(
horizontal: AppSpacing.lg,
@@ -109,7 +109,7 @@ class _OnboardingPageState extends State<OnboardingPage> {
TextButton(
onPressed: _skip,
child: Text(
'',
'',
style: AppTextStyles.headlineMedium(context).copyWith(
color: context.colors.onSurfaceVariant,
),
@@ -118,7 +118,7 @@ class _OnboardingPageState extends State<OnboardingPage> {
],
),
),
// 页面内
// 頁面內
Expanded(
child: PageView.builder(
controller: _pageController,
@@ -133,7 +133,7 @@ class _OnboardingPageState extends State<OnboardingPage> {
},
),
),
// 底部指示器和按
// 底部指示器和按
Padding(
padding: const EdgeInsets.fromLTRB(
AppSpacing.lg,
@@ -143,7 +143,7 @@ class _OnboardingPageState extends State<OnboardingPage> {
),
child: Column(
children: [
// 面指示器
// 面指示器
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: List.generate(
@@ -152,7 +152,7 @@ class _OnboardingPageState extends State<OnboardingPage> {
),
),
const SizedBox(height: AppSpacing.xl),
// 下一步/始按
// 下一步/始按
SizedBox(
width: double.infinity,
height: 56,
@@ -167,7 +167,7 @@ class _OnboardingPageState extends State<OnboardingPage> {
elevation: 0,
),
child: Text(
_currentPage == _items.length - 1 ? '始使用' : '下一步',
_currentPage == _items.length - 1 ? '始使用' : '下一步',
style: AppTextStyles.headlineLarge(context).copyWith(
fontWeight: FontWeight.w600,
),
@@ -189,7 +189,7 @@ class _OnboardingPageState extends State<OnboardingPage> {
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
// 图标/图片容器
// 圖標/圖片容器
Container(
width: 200,
height: 200,
@@ -217,7 +217,7 @@ class _OnboardingPageState extends State<OnboardingPage> {
height: 180,
fit: BoxFit.cover,
errorBuilder: (context, error, stackTrace) {
// 片加载失败时显示图标
// 片加載失敗時顯示圖標
return Icon(
item.icon ?? LucideIcons.image,
size: 72,
@@ -234,7 +234,7 @@ class _OnboardingPageState extends State<OnboardingPage> {
),
),
const SizedBox(height: AppSpacing.xxl + AppSpacing.lg),
// 标题
// 標題
Text(
item.title,
style: AppTextStyles.displaySmall(context).copyWith(