Saltar al contenido principal

Guía de migración para agregar AppLifecycleState.hidden

Se agregó un state hidden adicional a AppLifecycleState.

Resumen

#

Se agregó un nuevo state hidden al enum AppLifecycleState para indicar cuándo la aplicación no es visible.

Contexto

#

El enum AppLifecycleState se usa para indicar en qué lifecycle state se encuentra la aplicación cuando se llama a WidgetsBindingObserver.didChangeAppLifecycleState.

Descripción del cambio

#

El nuevo State AppLifecycleState.hidden se agregó al enum AppLifecycleState en el paquete dart:ui.

Se entra al state hidden cuando todas las vistas de la aplicación ya no son visibles para el usuario. En Android e iOS, se entra brevemente a este state cada vez que la máquina de states pasa de inactive a paused, o de paused a inactive. No cambia cuando se entra a paused o inactive. En otras plataformas, estará en este state mientras la aplicación no sea visible.

Guía de migración

#

Si el código tiene declaraciones switch que manejan todos los casos del enum AppLifecycleState , se deberá agregar un nuevo caso para manejar el State AppLifecycleState.hidden .

Código antes de la migración:

dart
void didChangeAppLifecycleState(AppLifecycleState state) {
  switch (state) {
    case AppLifecycleState.resumed:
    case AppLifecycleState.inactive:
      // Do something when the app is visible...
      break;
    case AppLifecycleState.paused:
    case AppLifecycleState.detached:
      // Do something when the app is not visible...
      break;
  }
}

Código después de la migración:

dart
void didChangeAppLifecycleState(AppLifecycleState state) {
  switch (state) {
    case AppLifecycleState.resumed:
    case AppLifecycleState.inactive:
      // Do something when the app is visible...
      break;
    case AppLifecycleState.hidden:  // <-- This is the new state.
    case AppLifecycleState.paused:
    case AppLifecycleState.detached:
      // Do something when the app is not visible...
      break;
  }
}

Si ya existe un caso default: en la sentencia switch, o si el código utiliza condicionales en su lugar, entonces el código compilará sin cambios, pero aún así se deberá evaluar el caso por defecto o el condicional para decidir si también se debe manejar el state hidden.

Timeline

#

Introducido en la versión: 3.11.0-16.0.pre
En la versión estable: 3.13.0

Referencias

#

PRs relevantes:

  • PR 42418: Agrega el valor de enum AppLifecycleState.hidden