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.

Navegación en Jetpack Compose – Fragments/ViewModels La navegación en Jetpack Compose se realiza a través de Fragments y ViewModels. Los Fragments son componentes de la interfaz de usuario que se utilizan para representar una pantalla o una parte de ella. Los ViewModels, por otro lado, almacenan y administran los datos relacionados con las pantallas. Para navegar entre Fragments, se puede utilizar la clase NavController. Esta clase proporciona métodos para navegar hacia adelante, hacia atrás y para pasar argumentos entre los Fragments. Además, se pueden utilizar los métodos push y pop para navegar a través de una pila de Fragments, lo que permite una navegación más flexible y dinámica. Por otro lado, al utilizar ViewModels, se pueden compartir datos entre Fragments de manera eficiente. Los ViewModels almacenan los datos de forma que están disponibles para toda la aplicación y se mantienen durante los cambios de configuración, como las rotaciones de pantalla. En resumen, la navegación en Jetpack Compose se basa en el uso de Fragments y ViewModels, lo que permite una navegación fluida y la gestión eficiente de datos entre las diferentes pantallas.

Así que estoy revisando este tutorial oficial de Compose: https://developer.android.com/courses/pathways/compose

Hay Jetpack Compose Navigation: https://developer.android.com/codelabs/jetpack-compose-navigation

Básicamente, en ese ejemplo solo hay una actividad, sin fragmentos, y en lugar de fragmentos se utilizan composables (implementa 3 pantallas) para el gráfico de navegación.

Este ejemplo también es realmente malo porque no tiene ViewModels en absoluto…

Entonces, básicamente, ¿cómo se vería una aplicación real en este momento?

¿Una sola actividad con un solo ViewModel y muchas pantallas hechas en composables que usan el mismo ViewModel (lo cual, por supuesto, es realmente malo)? ¿O deberíamos agregar un ViewModel separado dentro de cada función inicial composable de una pantalla específica en lugar de una actividad (que solo podría tener un solo ViewModel, un ciclo de vida)?

Entonces, básicamente, ¿ya no necesitamos fragmentos en la actualidad?

enter image description here

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Como experto en tecnología de la información especializado en Android, android-jetpack-compose, android-navigation, jetpack-compose-navigation y navigation-compose, puedo afirmar que el tutorial oficial de Compose y el ejemplo de navegación de Jetpack Compose proporcionado por Android tienen ciertas limitaciones que pueden no ser ideales para aplicaciones del mundo real.

    Si bien el ejemplo proporcionado por el equipo de Android demuestra cómo se puede navegar entre pantallas en una aplicación basada en Compose utilizando el componente de navegación, no implementa ViewModels. En escenarios del mundo real, se recomienda utilizar ViewModels, ya que ayuda a separar la capa de presentación de la lógica empresarial.

    En cuanto a cómo se vería una aplicación real utilizando Jetpack Compose Navigation, el enfoque típico es tener una sola actividad que albergue todas las pantallas, y un ViewModel separado para cada pantalla. Luego, el ViewModel se pasa a los componibles de la pantalla correspondiente, permitiéndoles renderizar la interfaz de usuario y manejar las interacciones. Este enfoque asegura que cada ViewModel tenga su ciclo de vida y evita el efecto secundario de que un solo ViewModel esté demasiado acoplado a múltiples pantallas.

    Si bien los fragmentos aún se pueden utilizar en Jetpack Compose Navigation, ya no son los bloques de construcción principales de la interfaz de usuario. Los componibles son los nuevos bloques de construcción de la interfaz de usuario y son mucho más flexibles y fáciles de utilizar en comparación con los fragmentos.

    En resumen, Jetpack Compose Navigation proporciona una forma poderosa y flexible de navegar entre pantallas en una aplicación basada en Compose. Al adoptar el enfoque recomendado de tener una sola actividad con ViewModels separados para cada pantalla, los desarrolladores pueden construir aplicaciones basadas en Compose escalables, mantenibles y robustas.

Comments are closed.