Экран стека маршрутизатора Expo не работает в зависимости от заказаAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Экран стека маршрутизатора Expo не работает в зависимости от заказа

Сообщение Anonymous »

Экран стека выставки не работает. Не загружается страница входа в систему при первой загрузке в зависимости от порядка первой загрузки экрана (вкладки). Когда я пытаюсь сначала загрузить экран входа в систему, изменив порядок экранов, я не могу его изменить. Я очистил улов и сделал все возможное, пожалуйста, помогите мне. Вот мой _layout.tsx
import FontAwesome from '@expo/vector-icons/FontAwesome';
import { DarkTheme, DefaultTheme, ThemeProvider } from '@react-navigation/native';
import { useFonts } from 'expo-font';
import { SplashScreen, Stack } from 'expo-router';
import { useEffect } from 'react';
import { useColorScheme } from 'react-native';
import { RootSiblingParent } from 'react-native-root-siblings';
import SignInPage from './screens/Login';
export {
// Catch any errors thrown by the Layout component.
ErrorBoundary,
} from 'expo-router';

// export const unstable_settings = {
// // Ensure that reloading on `/modal` keeps a back button present.
// initialRouteName: '(tabs)',
// };

export default function RootLayout() {
const [loaded, error] = useFonts({
SpaceMono: require('../assets/fonts/SpaceMono-Regular.ttf'),
...FontAwesome.font,
});

// Expo Router uses Error Boundaries to catch errors in the navigation tree.
useEffect(() => {
if (error) throw error;
}, [error]);

return (

{/* Keep the splash screen open until the assets have loaded. In the future, we should just support async font loading with a native version of font-display. */}
{!loaded && }
{loaded &&

}

);
}

function RootLayoutNav() {
const colorScheme = useColorScheme();

return (













);
}

Login.tsx
import React, { useState } from 'react';
import { View, TextInput, Text, StyleSheet } from 'react-native';
import { TouchableOpacity } from 'react-native-gesture-handler';
import PasswordInput from '../../components/user/PasswordInput';
import { getAuth, signInWithEmailAndPassword } from 'firebase/auth';
import { Link, useRouter,Stack } from 'expo-router';
import Toast from 'react-native-root-toast';
import { FirebaseError } from 'firebase/app';

const SignInPage = () => {
const router = useRouter();
const [email, setEmail] = useState('');
const [password, setPassword] = useState('');

const handleSignIn = async () => {
try {
const auth = getAuth();
await signInWithEmailAndPassword(auth, email, password);

// Handle successful sign-in
console.log('User signed in successfully');
// router.push('../../one');

// Perform any other necessary actions after successful sign-in
} catch (error) {
// Function to format Firebase error codes to user-friendly messages
const formatErrorMessage = (error :any) => {
switch (error.code) {
case 'auth/invalid-email':
return 'Invalid email address. Please enter a valid email.';
case 'auth/user-disabled':
return 'Your account has been disabled. Please contact support.';
case 'auth/user-not-found':
case 'auth/wrong-password':
return 'Invalid email or password. Please check your credentials.';
// Add more error codes and corresponding messages as needed
default:
return 'An error occurred. Please try again later.';
}
};

// Handle sign-in error
const firebaseError = error as FirebaseError;
const errorMessage = formatErrorMessage(firebaseError);
let toast = Toast.show(`Sign-in error: ${errorMessage}`, {
duration: Toast.durations.LONG,
});

// If you want to use console.error for debugging
// console.error('Sign-in error:', error);
// Add any necessary error handling logic or display error message to the user
}
};

return (








Sign In


New User? Sign Up


Forgot Password




);
};

const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: 'white',
justifyContent: 'center',
alignItems: 'center',
padding: 16,
},
box: {
width: '90%',
borderRadius: 4,
backgroundColor: 'white',
},
input: {
width: '100%',
marginBottom: 12,
padding: 8,
borderWidth: 1,
borderRadius: 4,
},
buttonContainer: {
backgroundColor: '#4287f5',
justifyContent: 'center',
alignItems: 'center',
borderRadius: 20,
paddingVertical: 10,
paddingHorizontal: 20,
},
buttonText: {
color: '#fff',
fontSize: 16,
fontWeight: 'bold',
},
});

export default SignInPage;


Подробнее здесь: https://stackoverflow.com/questions/765 ... d-on-order
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»