Amper - Compose

  • Amper permet gestionar les llibreries Compose de manera fàcil i flexible.

    Introducció

    Crea un projecte “JVM GUI Application (Compose Multiplatform) amb Kotlin - Idea.

    Si obres el fitxer module.yaml pots veure que el mòdul està configurat per Compose.

    Les dependències $compose.* es declaren amb una sintaxi especial de referència al catàleg de biblioteques de l’eina Compose.

    module.yaml
    product: jvm/app
    dependencies:
    - $compose.desktop.currentOs
    settings:
    compose: enabled

    Catàlegs de biblioteques

    Un catàleg de biblioteques associa claus a coordenades de biblioteques (inclosa la versió) i permet afegir les mateixes biblioteques com a dependències a múltiples mòduls sense haver de repetir les coordenades ni les versions de les biblioteques.

    Els catàlegs de la cadena d’eines es defineixen implícitament i contenen biblioteques predefinides relacionades amb la cadena d’eines corresponent. El nom d’un catàleg d’aquest tipus correspon al nom de la cadena d’eines corresponent a la secció de configuració.

    Per exemple, les dependències dels frameworks de Compose Multiplatform són accessibles mitjançant el catàleg $compose: Referència DSL - Compose

    Totes les dependències d’aquests catàlegs solen tenir la mateixa versió, que és la versió de la cadena d’eines.

    Per utilitzar dependències dels catàlegs, fes servir la sintaxi $<catalog-name>.<key> en lloc de les coordenades.

    dependencies:
    - org.jetbrains.kotlinx:kotlinx-datetime:0.6.2
    # Compose dependencies
    - $compose.foundation
    - $compose.material3
    - $compose.desktop.currentOs

    Hot Reload

    Amper és compatible amb Compose Hot Reload, que permet veure canvis de la UI en temps real sense reiniciar l’aplicació. Això millora significativament l’experiència de desenvolupament escurçant el cicle de retroalimentació durant el desenvolupament de la UI.

    Configuració

    Per habilitar Compose Hot Reload, configura compose.experimental.hotReload a enabled:

    product: jvm/app # or lib with JVM platform
    settings:
    compose:
    enabled: true
    experimental:
    hotReload: enabled

    Quan executes la teva aplicació amb Compose Hot Reload activat:

    • Amper descarrega i executa automàticament JetBrains Runtime per maximitzar les capacitats de hot-swap.
    • S’adjunta un agent Java per a Compose Hot Reload durant l’execució
    • Apareix una petita icona de devtools de Compose Hot Reload al costat de la finestra de l’aplicació, indicant que la funcionalitat està activa.

    Integració amb l’IDE

    Quan executes la teva aplicació des de l’IDE, pots obtenir recompilació i recàrrega automàtica basada en canvis del sistema de fitxers, utilitzant el plugin Amper per a IntelliJ.

    Per configurar-ho, no has de fer res, el plugin detecta automàticament la presència de Compose Hot Reload i activa la funcionalitat.

    DevelopmentEntryPoint

    També és possible executar composables específics com a mode Compose Hot Reload.

    Per fer-ho, has de posar l’anotació @DevelopmentEntryPoint a la funció composable sense paràmetres.

    Apareixerà una icona clicable al marge esquerre del composable:

    Limitacions actuals

    • Has d’assegurar-te que jvm és una de les plataformes del mòdul.
    • Amper no observa el sistema de fitxers, per tant, les recàrregues automàtiques només estan disponibles quan s’utilitza l’IDE.

    Pendent