es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

‘package:flutter/src/widgets/navigator.dart’: La afirmación falló: línea 5338 pos 12: ‘!_debugLocked’ no es verdadera. Y este es mi código proporcionado a continuación.

Cuando implemento el código para la página de SplashScreen y navego a una pantalla de inicio de sesión, se produce una excepción como esta ‘package:flutter/src/widgets/navigator.dart’: Fallo de aserción: línea 5338 posición 12: ‘!_debugLocked’: no es verdadero. La función que he declarado para navegar a la página no funciona correctamente, pero no hay errores en tiempo de compilación, el error solo se muestra en tiempo de ejecución. No sé cómo resolverlo. Por favor, alguien ayude.

“`dart
import 'package:first_project_1/Screens/login.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

class ScreenSplash extends StatefulWidget {
const ScreenSplash({Key? key}) : super(key: key);

@override
_ScreenSplashState createState() => _ScreenSplashState();
}

class _ScreenSplashState extends State<screensplash> {

@override
void initState() {
// TODO: implement initState
super.initState();
gotoLogin(context);
}

@override
void didChangeDependencies() {
// TODO: implement didChangeDependencies
super.didChangeDependencies();
}

@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Image.asset('assets/images/VDlogo.png',height: 150,),
),
);
}

@override
void dispose() {
// TODO: implement dispose
super.dispose();
}

Future<void> gotoLogin(BuildContext context) async {
Future.delayed(Duration(seconds: 4));
Navigator.of(context).pushReplacement(
MaterialPageRoute(
builder: (ctx)=> ScreenLogin(),
),
);
}
}
“`

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Solución para la Excepción del Navegador de Flutter

    El mensaje de error indica que el navegador está bloqueado y no es capaz de navegar correctamente a la pantalla de inicio de sesión. En otras palabras, el árbol de widgets no se inicializa correctamente.

    Aquí tienes algunas soluciones que puedes probar:

    1. Envuelve el navegador en una función Future.delayed – esto se debe a que el método initState() se llama antes de que se ejecute el método build, por lo que necesitamos agregar un retraso antes de llamar al navegador.
      @override
        void initState() {
          super.initState();
          Future.delayed(Duration(seconds: 4), gotoLogin);
        }
      
    2. Llama al navegador en la función didChangeDependencies() – esto hará que el navegador funcione correctamente una vez que todas las dependencias del árbol de widgets se hayan inicializado correctamente.
    @override
      void didChangeDependencies() {
        super.didChangeDependencies();
        // Agrega esta línea
        WidgetsBinding.instance?.addPostFrameCallback((_) => gotoLogin(context));
      }
    

    ¡Prueba estas soluciones y si ninguna de ellas funciona, no dudes en pedir ayuda adicional!

Comments are closed.