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.

Flutter MaterialApp constructor condicional

Estoy utilizando la función constructora de mi MaterialApp para envolver mis rutas con un widget. Sin embargo, solo quiero mostrar el envoltorio en rutas específicas. ¿Alguna idea de cómo lograr esto?

De hecho, estoy usando GetX y GetMaterialApp, pero no creo que eso haga alguna diferencia.

@Override
Widget build(BuildContext context) {

   return GetMaterialApp(
      home: HomeScreen(),

      builder: (context, child) {
         // Solo mostrar GlobalPlayerWrapper en rutas específicas
        return GlobalPlayerWrapper(child: child!);
      },

      title: 'Aschaffenburg',
    );
}
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para mostrar el GlobalPlayerWrapper solo en rutas específicas, puedes usar una condición dentro de la función builder. Dentro de la función builder, puedes acceder a la ruta actual usando el método ModalRoute.of (context). Esto regresa un objeto Ruta, que tiene una propiedad de configuración que contiene información sobre la ruta actual. Luego puedes revisar esta propiedad de configuración para ver si coincide con las rutas específicas en las que quieres mostrar el contenedor.

    Aquí hay un ejemplo de cómo modificar tu función builder para lograr esto:

    @override
    Widget build(BuildContext context) {
    
       return GetMaterialApp(
          home: HomeScreen(),
    
          builder: (context, child) {
             bool shouldShowWrapper = ModalRoute.of(context)?.settings.name == '/ruta_especifica';
             if (shouldShowWrapper){
                return GlobalPlayerWrapper(child: child!);
             } else {
                return child!;
             }
          },
    
          title: 'Aschaffenburg',
        );
    }
    

    En este ejemplo, estamos comprobando si el nombre de la configuración de la ruta actual coincide con la cadena ‘/ruta_especifica’. Si lo hace, devolvemos el hijo envuelto en el widget GlobalPlayerWrapper. Si no coincide, simplemente devolvemos el hijo sin cambios.

    Puedes modificar la condición para que coincida con cualquier ruta específica en la que quieras mostrar el contenedor.

Comments are closed.