Saltar al contenido principal

API desaprobada eliminada después de la v3.7

Después de llegar al final de su vida útil, las siguientes API desaprobadas fueron eliminadas de Flutter.

Resumen

#

De acuerdo con la política de deprecación de Flutter, se han eliminado las APIs deprecadas que llegaron al final de su vida útil después del lanzamiento estable 3.7.

Todas las API afectadas se han recopilado en esta fuente principal para ayudar en la migración. También está disponible una hoja de referencia rápida.

Cambios

#

Esta sección enumera las desaprobaciones, clasificadas por la clase afectada.

GestureRecognizer.kind y subclases

#

Compatible con Flutter Fix: sí

GestureRecognizer.kind fue deprecado en v2.3. Usa GestureRecognizer.supportedDevices en su lugar.

Este mismo cambio afecta a todas las subclases de GestureRecognizer:

  • EagerGestureRecognizer
  • ForcePressGestureRecognizer
  • LongPressGestureRecognizer
  • DragGestureRecognizer
  • VerticalDragGestureRecognizer
  • HorizontalDragGestureRecognizer
  • MultiDragGestureRecognizer
  • ImmediateMultiDragGestureRecognizer
  • HorizontalMultiDragGestureRecognizer
  • VerticalMultiDragGestureRecognizer
  • DelayedMultiDragGestureRecognizer
  • DoubleTapGestureRecognizer
  • MultiTapGestureRecognizer
  • OneSequenceGestureRecognizer
  • PrimaryPointerGestureRecognizer
  • ScaleGestureRecognizer

Este cambio permitió que se reconocieran múltiples dispositivos para un gesto, en lugar de la única opción que proporcionaba kind.

Migration guide

Código antes de la migración:

dart
var myRecognizer = GestureRecognizer(
  kind: PointerDeviceKind.mouse,
);

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

dart
var myRecognizer = GestureRecognizer(
  supportedDevices: <PointerDeviceKind>[ PointerDeviceKind.mouse ],
);

References

Documentación de la API:

PRs relevantes:


ThemeData accentColor, accentColorBrightness, accentColorTextTheme, accentColorIconTheme y buttonColor

#

Compatible con Flutter Fix: sí

Las propiedades accentColor, accentColorBrightness, accentColorTextTheme, accentColorIconTheme y buttonColor de ThemeData fueron deprecadas en v2.3.

Este cambio alineó mejor a ThemeData con las directrices de Material Design. También generó mayor claridad en los temas (theming) al depender del esquema de color principal o de los temas de componentes individuales para el estilo deseado.

Las propiedades accentColorBrightness, accentColorTextTheme, accentColorIconTheme y buttonColor ya no son utilizadas por el framework. Las referencias deben eliminarse.

Los usos de ThemeData.accentColor deben reemplazarse con ThemeData.colorScheme.secondary.

Guía de migración

#

Código antes de la migración:

dart
var myTheme = ThemeData(
  //...
  accentColor: Colors.blue,
  //...
);
var color = myTheme.accentColor;

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

dart
var myTheme = ThemeData(
  //...
  colorScheme: ColorScheme(
    //...
    secondary:Colors.blue,
    //...
  ),
  //...
);
var color = myTheme.colorScheme.secondary;

References

Documentación de la API:

Issues relevantes:

PRs relevantes:

Deprecado en:

Eliminado en:


Actualizaciones de AppBar, SliverAppBar y AppBarTheme

#

Compatible con Flutter Fix: sí

En v2.4, se realizaron varios cambios en las clases de barra de aplicaciones (app bar) y sus temas para alinearse mejor con Material Design. Varias propiedades fueron deprecadas en ese momento y se han eliminado.

Para AppBar, SliverAppBar y AppBarTheme:

  • brightness se ha eliminado y es reemplazada por systemOverlayStyle
  • textTheme se ha eliminado y es reemplazada por toolbarTextStyle o titleTextStyle.
  • backwardsCompatibility se puede eliminar, ya que era una bandera de migración temporal para estas propiedades.

Además, AppBarTheme.color fue eliminado, teniendo como reemplazo a AppBarTheme.backgroundColor.

Migration guide

Código antes de la migración:

dart
var toolbarTextStyle = TextStyle(...);
var titleTextStyle = TextStyle(...);
AppBar(
  brightness: Brightness.light,
  textTheme: TextTheme(
    bodyMedium: toolbarTextStyle,
    titleLarge: titleTextStyle,
  )
  backwardsCompatibility: true,
);
AppBarTheme(color: Colors.blue);

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

dart
var toolbarTextStyle = TextStyle(...);
var titleTextStyle = TextStyle(...);
AppBar(
  systemOverlayStyle: SystemOverlayStyle(statusBarBrightness: Brightness.light),
  toolbarTextStyle: toolbarTextStyle,
  titleTextStyle: titleTextStyle,
);
AppBarTheme(backgroundColor: Colors.blue);

References

Documentación de la API:

Issues relevantes:

Deprecado en:

Eliminado en:


SystemChrome.setEnabledSystemUIOverlays

#

Compatible con Flutter Fix: sí

En v2.3, SystemChrome.setEnabledSystemUIOVerlays, el método estático para establecer las superposiciones a nivel de sistema del dispositivo (como las barras de estado y navegación), fue deprecado en favor de SystemChrome.setEnabledSystemUIMode.

Este cambio permitió configurar modos comunes de pantalla completa que coinciden con los diseños nativos de aplicaciones Android como edge to edge.

El establecimiento manual de superposiciones, en lugar de elegir un modo específico, todavía está soportado a través de SystemUiMode.manual, lo que permite a los desarrolladores pasar la misma lista de superposiciones que antes.

Migration guide

Código antes de la migración:

dart
SystemChrome.setEnabledSystemUIOverlays(<SystemUiOverlay>[
  SystemUiOverlay.top,
  SystemUiOverlay.bottom,
]);

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

dart
SystemChrome.setEnabledSystemUIMode(
  SystemUiMode.manual,
  overlays: <SystemUiOverlay>[
    SystemUiOverlay.top,
    SystemUiOverlay.bottom,
  ],
);

References

Documentación de la API:

Issues relevantes:

Deprecado en:

Eliminado en:


SystemNavigator.routeUpdated

#

Compatible con Flutter Fix: sí

En v2.3, SystemNavigator.routeUpdated fue deprecado en favor de SystemNavigator.routeInformationUpdated.

En lugar de tener dos formas de actualizar el engine sobre la ruta actual, el cambio movió todo a una sola API, la cual selecciona por separado el modo de historial de entrada única si se crea un Navigator que reporta rutas.

Migration guide

Código antes de la migración:

dart
SystemNavigator.routeUpdated(routeName: 'foo', previousRouteName: 'bar');

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

dart
SystemNavigator.routeInformationUpdated(location: 'foo');

References

Documentación de la API:

Issues relevantes:

Deprecado en:

Eliminado en:


AnimatedSize.vsync

#

Compatible con Flutter Fix: sí

En v2.2, AnimatedSize.vsyc fue deprecado. Esta propiedad ya no era necesaria después de que AnimatedSize se convirtiera en un StatefulWidget cuya State mezclara SingleTickerProviderStateMixin. El cambio se realizó para solucionar una fuga de memoria.

Los usos de vsync deben eliminarse, ya que AnimatedSize ahora maneja esta propiedad.

Migration guide

Código antes de la migración:

dart
AnimatedSize(
  vsync: this,
  // ...
);

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

dart
AnimatedSize(
  // ...
);

References

Documentación de la API:

Deprecado en:

Eliminado en:


Timeline

#

En versión estable: 3.10