feat(onboarding): 添加新用户引导流程

实现了完整的应用引导功能,包括:
- 新增引导页面UI,包含健康数据追踪、轻断食计划和健康挑战三个介绍页面
- 添加引导状态持久化存储,使用AsyncStorage管理用户完成状态
- 修改应用启动逻辑,根据引导状态决定跳转到主页或引导页
- 在开发者选项中添加重置引导状态功能,方便测试
- 更新路由配置和存储键常量,统一管理引导相关配置
This commit is contained in:
richarjiang
2025-11-06 15:22:31 +08:00
parent 9b1a40cea3
commit a228280ca4
10 changed files with 323 additions and 16 deletions

View File

@@ -6,8 +6,9 @@ import { preloadUserData } from '@/store/userSlice';
import { router } from 'expo-router';
import React, { useEffect, useState } from 'react';
import { ActivityIndicator, View } from 'react-native';
const ONBOARDING_COMPLETED_KEY = '@onboarding_completed';
import AsyncStorage from '@/utils/kvStore';
import { STORAGE_KEYS } from '@/services/api';
const ONBOARDING_COMPLETED_KEY = STORAGE_KEYS.onboardingCompleted;
export default function SplashScreen() {
const backgroundColor = useThemeColor({}, 'background');
@@ -32,15 +33,13 @@ export default function SplashScreen() {
console.warn('推送通知初始化失败,但不影响应用正常使用:', error);
});
// const onboardingCompleted = await AsyncStorage.getItem(ONBOARDING_COMPLETED_KEY);
const onboardingCompleted = await AsyncStorage.getItem(ONBOARDING_COMPLETED_KEY);
// if (onboardingCompleted === 'true') {
// router.replace('/(tabs)');
// } else {
// router.replace('/onboarding');
// }
// setIsLoading(false);
router.replace(ROUTES.TAB_STATISTICS);
if (onboardingCompleted === 'true') {
router.replace(ROUTES.TAB_STATISTICS);
} else {
router.replace(ROUTES.ONBOARDING);
}
} catch (error) {
console.error('检查引导状态或预加载用户数据失败:', error);
// 如果出现错误,仍然进入应用,但可能会有状态更新