El arsenal de Android – Arquitectura

Premo es una biblioteca Kotlin multiplataforma que lo ayuda a implementar la capa de presentación y compartirla en Android, iOS, escritorio y Web. Concéntrese en escribir lógica en lugar de resolver problemas de interfaz de usuario comunes y aburridos.

Aquí hay algunas características clave:

  • tenencia estatal – PresentationModel es una versión multiplataforma de ViewModel.
  • Ciclo vital – PresentationModel es consciente del ciclo de vida.
  • Navegación – navegar entre PresentationModels en lugar de cambiar de vista.
  • Persistencia – guardar y restaurar el estado después de volver a crear un proceso.
  • Comunicación – enviar mensajes de niños a la raíz PresentationModel.

Al mismo tiempo, la biblioteca ofrece libertad de elección:

  • Arquitectura – MVVM, PM, MVI u otros.
  • interfaz de usuario – Jetpack Compose para Android y SwiftUI para iOS.

Resumen

Descripción general

La biblioteca se basa en las ideas de Plantilla de presentación modelo descrito por Martin Fowler. El modelo de presentación almacena el estado de la presentación y se coordina con la capa del modelo de dominio.

Básicamente, no solo tendrá una plantilla de presentación, sino una composición de plantillas de presentación secundarias. En la base habrá una plantilla de presentación raíz, a partir de la cual crecerá un árbol bebé. Los niños se pueden colocar en el Stack Navigator, organizando así la pila de navegación.

Esta composición de árbol es adecuada tanto para una vista jerárquica como para una composición de funciones de marcos de interfaz de usuario declarativos.

Una característica interesante del árbol es que el hijo mantiene una referencia al padre. Esto permite la mensajería entre plantillas de presentación. Por ejemplo, cuando ocurre un evento en un niño que requiere una reacción del padre. En este caso, el niño puede enviar un mensaje a la raíz para que lo maneje uno de los padres.

Los comandos de navegación pueden ser tales eventos. Un PM secundario envía un mensaje, y luego su PM principal puede interceptar este mensaje y enviar el siguiente PM secundario en Stack Navigator.

Esta forma de navegar tiene varias ventajas:

  • Libere al niño PM de la responsabilidad de qué transición hacer y deje que los padres decidan.
  • Simplifique la navegación anidada cuando ocurra un evento en lo profundo de la jerarquía.

Instalación

Agregar a la secuencia de comandos gradle raíz:

allprojects {
    repositories {
        mavenCentral()
    }
}

Agregue dependencias al módulo multiplataforma compartido:

kotlin {
    sourceSets {
        val commonMain by getting {
            dependencies {
                api("me.dmdev.premo:premo:<latest_version>")
                api("me.dmdev.premo:premo-navigation:<latest_version>")
            }
        } 
    }
}

también necesitarás serialización kotlinx para implementar el PmStateSaver. Para ver muestra para más detalles.

¡Atención! La biblioteca está en la versión alfa preliminar. El trabajo estable y la compatibilidad con versiones anteriores no están garantizados. La API puede cambiar en el futuro.

Muestra

Muestra demuestra:

  • Compartiendo lógica de presentación entre Android, iOS, Desktop y Web.
  • Compartir la interfaz de usuario de composición entre Android y el escritorio.
  • Interfaz de usuario en Compose y SwiftUI.
  • Uso de StateFlow para implementar MVVM (PM).
  • Contador sencillo.
  • Pila de navegación.
  • Navegación inferior con multistack.
  • Navegación maestro-detalle.
  • Guardar y restaurar el estado después de matar el proceso.

Licencia

The MIT License (MIT)

Copyright (c) 2020-2022 Dmitriy Gorbunov (dmitriy.goto@gmail.com)

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

.

About MiReal

Compruebe también

El arsenal de Android – Sistema de archivos

Resumen Descripción general Cuanto más alto sea el nivel de la API, más acceso restringido …

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

holiganbet giriş
- elexbet yeni giriş -

bahsegel bahis

- anadolu casino giriş -
betboo giriş
-

Personel Sağlık