En mi aplicación, tengo un modal que se supone que aparece si la aplicación detecta que el usuario proviene de la "FinishingScreen", aparte de eso, el modal no debería aparecer.
Tengo un " Navegador de pestañas del cajón " anidado dentro de mi " Navegador de pestañas principal "
Cuando navego desde FinishingScreen a mi HomeScreen, aparece el modal porque didComeFromFinishingScreen == true
Cuando navego a cualquiera de las pantallas contenidas en el cajón, luego vuelvo a la pantalla de inicio, el modal vuelve a aparecer porque didComeFromFinishingScreen sigue siendo verdadero.
Creo que esto tiene que ver con la forma en que manejo los parámetros de la ruta.
A continuación se muestra el código que utilizo para manejar la ruta.params:
Código dentro de FinishingScreen haciendo que modal cambie inicialmente
const checkConfirm = async () => { return await client_instance.stop_running().then( ()=>navigation.navigate('Home', { didComeFromFinishingScreen: true, }) ) } ... <TouchableOpacity onPress={checkConfirm} > <Text>Stop Running</Text> </TouchableOpacity>Comprobando si didComeFromFinishingScreen == verdadero dentro de la pantalla de inicio
if(route.params?.didComeFromFinishingScreen){ if(isFocused){ setModalVisible(true) } } return()=>{ console.log('cleanup function is closing modal') if(isFocused){ setModalVisible(false) } }Ir de la pantalla de inicio a una de las pantallas dentro del cajón
<DrawerItem icon={({color, size }) => ( <Icon name="account-outline" color={color} size={height*0.032} /> )} label= {i18n.t('prof')} onPress={()=>{navigation.navigate('ProfileStackScreen', {didComeFromFinishingScreen: false} )}} />Navegar de regreso a la pantalla de inicio desde cualquiera de las pantallas en el cajón
<DrawerItem icon={({color, size }) => ( <Icon name="home-outline" color={color} size={height*0.032} /> )} label= {i18n.t('home')} onPress={()=>{navigation.navigate('HomeDrawer', { didComeFromFinishingScreen: false}) }} />