refactor(App, navigation): migrate to Expo Router and clean up navigation structure
All checks were successful
Frontend CI / build-and-push-web (push) Successful in 4m27s
Frontend CI / ota-android (push) Successful in 11m6s
Frontend CI / build-android-apk (push) Successful in 1h16m45s

- Updated App entry point to utilize Expo Router, simplifying the navigation setup.
- Removed legacy navigation components and services to streamline the codebase.
- Adjusted package.json to reflect the new entry point and updated dependencies for compatibility.
- Enhanced overall application structure by consolidating navigation logic and improving maintainability.
This commit is contained in:
lafay
2026-03-24 14:21:31 +08:00
parent b91e78c921
commit 2ddb9cadd8
111 changed files with 1829 additions and 3214 deletions

View File

@@ -13,7 +13,7 @@ import {
ScrollView,
} from 'react-native';
import { SafeAreaView } from 'react-native-safe-area-context';
import { useNavigation } from '@react-navigation/native';
import { useRouter } from 'expo-router';
import { MaterialCommunityIcons } from '@expo/vector-icons';
import Constants from 'expo-constants';
import { colors, spacing, fontSizes, borderRadius } from '../../theme';
@@ -22,6 +22,8 @@ import { Text, ResponsiveContainer } from '../../components/common';
import { useResponsive } from '../../hooks';
import { useSafeAreaInsets } from 'react-native-safe-area-context';
import * as hrefs from '../../navigation/hrefs';
interface SettingsItem {
key: string;
title: string;
@@ -65,7 +67,7 @@ const SETTINGS_GROUPS = [
];
export const SettingsScreen: React.FC = () => {
const navigation = useNavigation();
const router = useRouter();
const { logout } = useAuthStore();
const { isWideScreen } = useResponsive();
const insets = useSafeAreaInsets();
@@ -78,16 +80,16 @@ export const SettingsScreen: React.FC = () => {
const handleItemPress = (key: string) => {
switch (key) {
case 'edit_profile':
navigation.navigate('EditProfile' as never);
router.push(hrefs.hrefProfileEdit());
break;
case 'notification_settings':
navigation.navigate('NotificationSettings' as never);
router.push(hrefs.hrefProfileNotifications());
break;
case 'blocked_users':
navigation.navigate('BlockedUsers' as never);
router.push(hrefs.hrefProfileBlocked());
break;
case 'security':
navigation.navigate('AccountSecurity' as never);
router.push(hrefs.hrefProfileSecurity());
break;
case 'logout':
Alert.alert(
@@ -98,8 +100,9 @@ export const SettingsScreen: React.FC = () => {
{
text: '确定',
style: 'destructive',
onPress: () => {
logout();
onPress: async () => {
await logout();
router.replace(hrefs.hrefAuthLogin());
}
},
]