Saltar al contenido principal

API desaprobada eliminada después de la v3.19

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.19.

Todas las APIs afectadas se han compilado en esta fuente principal para ayudar en la migración. Para ayudar aún más con tu migración, consulta esta hoja de referencia rápida.

Cambios

#

Esta sección enumera las deprecaciones por paquete y clase afectada.

TextTheme

#

Paquete: flutter Compatible con Flutter Fix: sí

Varias propiedades de TextStyle de TextTheme fueron deprecadas en v3.1 para soportar nuevos estilos de la especificación de Material Design. Se enumeran en la siguiente tabla junto con el reemplazo correspondiente en la nueva API.

DesaprobaciónNueva API
headline1displayLarge
headline2displayMedium
headline3displaySmall
headline4headlineMedium
headline5headlineSmall
headline6titleLarge
subtitle1titleMedium
subtitle2titleSmall
bodyText1bodyLarge
bodyText2bodyMedium
captionbodySmall
buttonlabelLarge
overlinelabelSmall

Migration guide

Código antes de la migración:

dart
// TextTheme
// Base constructor
TextTheme(
  headline1: headline1Style,
  headline2: headline2Style,
  headline3: headline3Style,
  headline4: headline4Style,
  headline5: headline5Style,
  headline6: headline6Style,
  subtitle1: subtitle1Style,
  subtitle2: subtitle2Style,
  bodyText1: bodyText1Style,
  bodyText2: bodyText2Style,
  caption: captionStyle,
  button: buttonStyle,
  overline: overlineStyle,
);

// copyWith
TextTheme.copyWith(
  headline1: headline1Style,
  headline2: headline2Style,
  headline3: headline3Style,
  headline4: headline4Style,
  headline5: headline5Style,
  headline6: headline6Style,
  subtitle1: subtitle1Style,
  subtitle2: subtitle2Style,
  bodyText1: bodyText1Style,
  bodyText2: bodyText2Style,
  caption: captionStyle,
  button: buttonStyle,
  overline: overlineStyle,
);

// Getters
TextStyle style;
style = textTheme.headline1,
style = textTheme.headline2,
style = textTheme.headline3,
style = textTheme.headline4,
style = textTheme.headline5,
style = textTheme.headline6,
style = textTheme.subtitle1,
style = textTheme.subtitle2,
style = textTheme.bodyText1,
style = textTheme.bodyText2,
style = textTheme.caption,
style = textTheme.button,
style = textTheme.overline,

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

dart
// TextTheme
// Base constructor
TextTheme(
  displayLarge: headline1Style,
  displayMedium: headline2Style,
  displaySmall: headline3Style,
  headlineMedium: headline4Style,
  headlineSmall: headline5Style,
  titleLarge: headline6Style,
  titleMedium: subtitle1Style,
  titleSmall: subtitle2Style,
  bodyLarge: bodyText1Style,
  bodyMedium: bodyText2Style,
  bodySmall: captionStyle,
  labelLarge: buttonStyle,
  labelSmall: overlineStyle,
);

TextTheme.copyWith(
  displayLarge: headline1Style,
  displayMedium: headline2Style,
  displaySmall: headline3Style,
  headlineMedium: headline4Style,
  headlineSmall: headline5Style,
  titleLarge: headline6Style,
  titleMedium: subtitle1Style,
  titleSmall: subtitle2Style,
  bodyLarge: bodyText1Style,
  bodyMedium: bodyText2Style,
  bodySmall: captionStyle,
  labelLarge: buttonStyle,
  labelSmall: overlineStyle,
);

TextStyle style;
style = textTheme.displayLarge;
style = textTheme.displayMedium;
style = textTheme.displaySmall;
style = textTheme.headlineMedium;
style = textTheme.headlineSmall;
style = textTheme.titleLarge;
style = textTheme.titleMedium;
style = textTheme.titleSmall;
style = textTheme.bodyLarge;
style = textTheme.bodyMedium;
style = textTheme.bodySmall;
style = textTheme.labelLarge;
style = textTheme.labelSmall;

References

Documentación de la API:

PRs relevantes:


ThemeData

#

Paquete: flutter Compatible con Flutter Fix: sí

Varias propiedades de Color de ThemeData fueron deprecadas en v3.3 para soportar nuevos estilos de la especificación de Material Design. Estos colores fueron errorColor, backgroundColor, bottomAppBarColor y toggleableActiveColor. Los dos primeros son reemplazados por propiedades de ThemeData.colorScheme, mientras que bottomAppBarColor es reemplazado por el color del tema del componente, BottomAppBarTheme. El toggleableActiveColor ya no era utilizado por el framework y fue eliminado.

Migration guide

Código antes de la migración:

dart
var myTheme = ThemeData(
  //...
  errorColor: Colors.red,
  backgroundColor: Colors.blue,
  bottomAppBarColor: Colors.purple,
  toggleableActiveColor: Colors.orange,
  //...
);
var errorColor = myTheme.errorColor;
var backgroundColor = myTheme.backgroundColor;
var bottomAppBarColor = myTheme.bottomAppBarColor;
var toggleableActiveColor = myTheme.toggleableActiveColor;

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

dart
var myTheme = ThemeData(
  //...
  colorScheme: ColorScheme(
    /// ...
    error: Colors.red,
    background: Colors.blue,
  ),
  bottomAppBarTheme: BottomAppBarTheme(
    color: Colors.purple,
  ),
  //...
);
var errorColor = myTheme.colorScheme.error;
var backgroundColor = myTheme.colorScheme.background;
var bottomAppBarColor = myTheme.bottomAppBarTheme.color;
var toggleableActiveColor = Colors.orange;

References

Documentación de la API:

PRs relevantes:


CupertinoContextMenu.previewBuilder

#

Paquete: flutter Compatible con Flutter Fix: sí

El previewBuilder fue reemplazado por el builder de CupertinoContextMenu después de v3.4. Al agregar builder, se cubre la totalidad de la animación ejecutada por el menú contextual, cuya segunda mitad era realizada por previewBuilder y delimitada por CupertinoContextMenu.animationOpensAt.

Migration guide

Código antes de la migración:

dart
CupertinoContextMenu(
  previewBuilder: (BuildContext context, Animation<double> animation, Widget child) {
    return FittedBox(
      fit: BoxFit.cover,
      child: ClipRRect(
        borderRadius: BorderRadius.circular(64.0 * animation.value),
        child: Image.asset('assets/photo.jpg'),
      ),
    );
  },
  actions: <Widget>[
    CupertinoContextMenuAction(
      child: const Text('Action one'),
      onPressed: () {},
    ),
  ],
  child: FittedBox(
    fit: BoxFit.cover,
    child: Image.asset('assets/photo.jpg'),
  ),
);

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

dart
CupertinoContextMenu(
  actions: <Widget>[
    CupertinoContextMenuAction(
      child: const Text('Action one'),
      onPressed: () {},
    ),
  ],
  builder: (BuildContext context, Animation<double> animation) {
    final Animation<BorderRadius?> borderRadiusAnimation = BorderRadiusTween(
      begin: BorderRadius.circular(0.0),
      end: BorderRadius.circular(CupertinoContextMenu.kOpenBorderRadius),
    ).animate(
      CurvedAnimation(
        parent: animation,
        curve: Interval(
          CupertinoContextMenu.animationOpensAt,
          1.0,
        ),
      ),
    );

    final Animation<Decoration> boxDecorationAnimation = DecorationTween(
      begin: const BoxDecoration(
        color: Color(0xFFFFFFFF),
        boxShadow: <BoxShadow>[],
      ),
      end: BoxDecoration(
        color: Color(0xFFFFFFFF),
        boxShadow: CupertinoContextMenu.kEndBoxShadow,
      ),
    ).animate(
      CurvedAnimation(
        parent: animation,
        curve: Interval(
          0.0,
          CupertinoContextMenu.animationOpensAt,
        )
      )
    );

    return Container(
      decoration: animation.value < CupertinoContextMenu.animationOpensAt
        ? boxDecorationAnimation.value
        : null,
      child: FittedBox(
        fit: BoxFit.cover,
        child: ClipRRect(
          borderRadius: borderRadiusAnimation.value ?? BorderRadius.circular(0.0),
          child: SizedBox(
            height: 150,
            width: 150,
            child: Image.asset('assets/photo.jpg'),
          ),
        ),
      )
    );
   }
 )

References

Documentación de la API:

PRs relevantes:


Scrollbar.showTrackOnHover

#

Paquete: flutter Compatible con Flutter Fix: sí

La propiedad showTrackOnHover de Scrollbar, y su tema de componente asociado, ScrollbarThemeData.showTrackOnHover, fueron reemplazados por la propiedad Stateful ScrollbarThemeData.trackVisibility después de la v3.4. Al utilizar trackVisibility, todas las permutaciones de State pueden influir en mostrar la pista de la barra de desplazamiento, no solo al pasar el cursor (hover).

Migration guide

Código antes de la migración:

dart
Scrollbar(
  showTrackOnHover: true,
  child: //...
);
ScrollbarThemeData(
  showTrackOnHover: true,
);

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

dart
Scrollbar(
  child: //...
);
ScrollbarThemeData(
  // This will always show the track for any state.
  trackVisibility: MaterialStateProperty<bool>.all(true),
);
// Or
ScrollbarThemeData(
  // Only show on hover.
  trackVisibility: (Set<MaterialState> states) => states.contains(MaterialState.hovered),
);

References

Documentación de la API:

PRs relevantes:


Método KeepAliveHandle.release

#

Paquete: flutter Soportado por Flutter Fix: no

El método release de KeepAliveHandle fue eliminado y reemplazado por la llamada a dispose después de v3.3. Este cambio se realizó porque se descubrió que release a menudo se llamaba sin llamar luego a dispose, lo que provocaba fugas de memoria. El método dispose ejecuta la misma funcionalidad que antes hacía release.

Migration guide

Código antes de la migración:

dart
KeepAliveHandle handle = KeepAliveHandle();
handle.release();
handle.dispose();

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

dart
KeepAliveHandle handle = KeepAliveHandle();
handle.dispose();

References

Documentación de la API:

PRs relevantes:


InteractiveViewer.alignPanAxis

#

Paquete: flutter Compatible con Flutter Fix: sí

La propiedad alignPanAxis de InteractiveViewer fue eliminada y reemplazada con panAxis después de v3.3. Este cambio se realizó para habilitar más modos de desplazamiento (pan) en InteractiveViewer.

Migration guide

Código antes de la migración:

dart
InteractiveViewer(
  alignPanAxis: true,
);

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

dart
InteractiveViewer(
  panAxis: PanAxis.aligned,
);

References

Documentación de la API:

PRs relevantes:


MediaQuery.boldTextOverride

#

Paquete: flutter Compatible con Flutter Fix: sí

La propiedad boldTextOverride de MediaQuery fue eliminada y reemplazada con boldTextOf después de v3.5. Este cambio se realizó como parte de una refactorización más grande de MediaQuery, sobre todo reduciendo la cantidad de reconstrucciones (rebuilds) que se activarían por widgets que dependen de ella.

Migration guide

Código antes de la migración:

dart
MediaQuery.boldTextOverride(context);

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

dart
MediaQuery.boldTextOf(context)

References

Documentación de la API:

PRs relevantes:


Typedefs de builder renombrados para AnimatedList

#

Paquete: flutter Soportado por Flutter Fix: no

Con la adición de AnimatedGrid, AnimatedList fue refacturada para compartir una clase base común. Los nombres anteriores AnimatedListItemBuilder y AnimatedListRemovedItemBuilder se renombraron para reflejar mejor las clases con las que podían usarse después de v3.5. Renombra cualquier referencia a AnimatedItemBuilder y AnimatedRemovedItemBuilder.

References

Documentación de la API:

PRs relevantes:


FlutterDriver.enableAccessibility

#

Paquete: flutter_driver Soportado por Flutter Fix: sí

El método enableAccessibility de flutterDriver fue deprecado en v2.3. Fue eliminado y reemplazado con setSemantics. Este cambio hizo posible activar o desactivar la accesibilidad, en lugar de solo activarla.

Migration guide

Código antes de la migración:

dart
FlutterDriver driver = FlutterDriver.connectedTo(
  // ...
);
driver.enableAccessibility();

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

dart
FlutterDriver driver = FlutterDriver.connectedTo(
  // ...
);
driver.setSemantics(true);

References

Documentación de la API:

PRs relevantes:


TimelineSummary.writeSummaryToFile

#

Paquete: flutter_driver Soportado por Flutter Fix: sí

El método writeSummaryToFile de TimelineSummary fue deprecado en v2.1. Fue eliminado y reemplazado con writeTimelineToFile.

Migration guide

Código antes de la migración:

dart
TimelineSummary summary = TimelineSummary.summarize(
  myTimeline,
);
summary.writeSummaryToFile(
  traceName,
  pretty: true,
);

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

dart
TimelineSummary summary = TimelineSummary.summarize(
  myTimeline,
);
summary.writeTimelineToFile(
  traceName,
  pretty: true,
);

References

Documentación de la API:

PRs relevantes:

Android Platform Views en API 22 y anteriores

#

Compatible con Flutter Fix: no

A partir de Flutter 3.0, las vistas de plataforma requieren la API 23 o superior. En Flutter 3.19, ahora lanzamos UnsupportedOperationException al usar vistas de plataforma en dispositivos Android que ejecutan el nivel de API 22 y anteriores.

Migration guide

Establece el nivel mínimo de API a 23 (o superior) o verifica el nivel de API de Android antes de mostrar una vista de plataforma.


Las deprecaciones anunciadas anteriormente para los menús contextuales, relacionadas con ToolbarOptions, así como partes de TextSelectionController y SelectableRegionState, no se eliminaron en este ciclo para permitir más tiempo para la migración. Se espera que estas deprecaciones se eliminen en el próximo ciclo, el cual se anunciará nuevamente cuando llegue el momento.


Timeline

#

En versión estable: 3.22.0