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.

¿Bindings de GetX de Flutter?

Soy un traductor de español que traduce documentos de TI. Traduce lo siguiente al español. No traduzcas el código y la salida en markdown.

Soy nuevo en esta arquitectura, tengo una duda con respecto a las conexiones en getX.

Tengo dos controladores de carro y de pantalla de bienvenida. Necesito que este controlador de carrito mantenga su estado durante todo el ciclo de vida de la aplicación. El controlador de la pantalla de bienvenida solo para la pantalla de bienvenida.

Pero el controlador de la pantalla de bienvenida solo funciona cuando lo conecto con otros controladores en la conexión inicial en GetMaterialApp.

GetMaterialApp(
home: const SplashScreen(),
initialBinding: RootBinding(),
getPages: [
GetPage(
name: SplashScreen.routeName,
page: () => const SplashScreen(),
),
GetPage(
name: HomeScreen.routeName,
page: () => const HomeScreen(),
children: [
GetPage(
name: CategoryScreen.routeName,
page: () => const CategoryScreen(),
),
GetPage(
name: AboutScreen.routeName,
page: () => const AboutScreen(),
),
GetPage(
name: CartScreen.routeName,
page: () => const CartScreen(),
),
]),
],
);

La conexión raíz es:

class RootBinding implements Bindings {
@override
void dependencies() {
Get.put(SplashController());
Get.put(HomeController());
Get.put(CategoryController());
Get.put(AboutController());
}
}

Tampoco funciona cuando lo cambio a Get.lazyPut().

No sé si esta es la mejor práctica, el código anterior funciona, pero cuando elimino un controlador de la conexión inicial a una página, no funciona como a continuación:

GetPage(
name: SplashScreen.routeName,
page: () => const SplashScreen(),
binding: SplashBinding()
),

Enlace al código fuente https://github.com/shabhi1997/GetXBaseProject/tree/master

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para mantener el estado de cartController durante todo el ciclo de vida de la aplicación, puedes usar Get.put() sin especificar ninguna ruta o nombre de página en RootBinding. Esto asegura que la instancia de cartController esté disponible en toda la aplicación sin necesidad de ningún tipo de vinculación adicional.

    Para splashController, puedes usar una vinculación separada para la pantalla de inicio, como se menciona en el fragmento de código. Sin embargo, si quitas un controlador de la vinculación inicial y lo mueves a una vinculación de página específica, solo estará disponible para esa página en particular y para sus hijos.

    En cuanto al uso de Get.lazyPut(), generalmente se utiliza para crear instancias solo cuando se necesitan, lo que puede ayudar a optimizar el rendimiento de la aplicación. Sin embargo, en este escenario, como necesitas que el controlador esté disponible en toda la aplicación, es mejor usar Get.put() en su lugar.

    En general, tu código se ve bien y sigue las prácticas recomendadas para el uso de GetX para la gestión del estado.

Comments are closed.