Saltar al contenido principal

API desaprobada eliminada después de la v3.3

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

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.

RenderUnconstrainedBox

#

Compatible con Flutter Fix: no

RenderUnconstrainedBox fue deprecado en v2.1. Usa RenderConstraintsTransformBox en su lugar.

Donde no haya restricciones en ambos ejes, proporciona ConstraintsTransformBox.unconstrained a constraintsTransform.

Si RenderUnconstrainedBox.constrainedAxis estaba establecido previamente, reemplázalo respectivamente:

  • Donde constrainedAxis era previamente Axis.horizontal, establece constraintsTransform a ConstraintsTransformBox.widthUnconstrained.
  • Donde constrainedAxis era previamente Axis.vertical, establece constraintsTransform a ConstraintsTransformBox.heightUnconstrained.

Este cambio permitió la introducción de varios tipos más de transformaciones de restricciones a través de ConstraintsTransformBox. Otros parámetros de la antigua API son compatibles con la nueva API.

Migration guide

Código antes de la migración:

dart
// Unconstrained
final RenderUnconstrainedBox unconstrained = RenderUnconstrainedBox(
  textDirection: TextDirection.ltr,
  child: RenderConstrainedBox(
    additionalConstraints: const BoxConstraints.tightFor(height: 200.0),
  ),
  alignment: Alignment.center,
);

// Constrained in horizontal axis
final RenderUnconstrainedBox unconstrained = RenderUnconstrainedBox(
  constrainedAxis: Axis.horizontal,
  textDirection: TextDirection.ltr,
  child: RenderConstrainedBox(
    additionalConstraints: const BoxConstraints.tightFor(width: 200.0, height: 200.0),
  ),
  alignment: Alignment.center,
);

// Constrained in vertical axis
final RenderUnconstrainedBox unconstrained = RenderUnconstrainedBox(
  constrainedAxis: Axis.vertical,
  textDirection: TextDirection.ltr,
  child: RenderFlex(
    direction: Axis.vertical,
    textDirection: TextDirection.ltr,
    children: <RenderBox>[flexible],
  ),
  alignment: Alignment.center,
);

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

dart
// Unconstrained
final RenderConstraintsTransformBox unconstrained = RenderConstraintsTransformBox(
  constraintsTransform: ConstraintsTransformBox.unconstrained,
  textDirection: TextDirection.ltr,
  child: RenderConstrainedBox(
    additionalConstraints: const BoxConstraints.tightFor(height: 200.0),
  ),
  alignment: Alignment.center,
);

// Constrained in horizontal axis
final RenderConstraintsTransformBox unconstrained = RenderConstraintsTransformBox(
  constraintsTransform: ConstraintsTransformBox.widthUnconstrained,
  textDirection: TextDirection.ltr,
  child: RenderConstrainedBox(
    additionalConstraints: const BoxConstraints.tightFor(width: 200.0, height: 200.0),
  ),
  alignment: Alignment.center,
);

// Constrained in vertical axis
final RenderConstraintsTransformBox unconstrained = RenderConstraintsTransformBox(
  constraintsTransform: ConstraintsTransformBox.widthUnconstrained,
  textDirection: TextDirection.ltr,
  child: RenderFlex(
    direction: Axis.vertical,
    textDirection: TextDirection.ltr,
    children: <RenderBox>[flexible],
  ),
  alignment: Alignment.center,
);

References

Documentación de la API:

PRs relevantes:


DragAnchor, Draggable.dragAnchor y LongPressDraggable.dragAnchor

#

Compatible con Flutter Fix: sí

El enum DragAnchor y sus usos en Draggable.dragAnchor y LongPressDraggable.dragAnchor fueron deprecados en v2.1. Usa dragAnchorStrategy en su lugar.

Este cambio permitió una respuesta más precisa del widget arrastrable cuando se usa en conjunto con otros widgets como Stack y InteractiveViewer.

Migration guide

Código antes de la migración:

dart
Draggable draggable = Draggable();
draggable = Draggable(dragAnchor: DragAnchor.child);
draggable = Draggable(dragAnchor: DragAnchor.pointer);

LongPressDraggable longPressDraggable = LongPressDraggable();
longPressDraggable = LongPressDraggable(dragAnchor: DragAnchor.child);
longPressDraggable = LongPressDraggable(dragAnchor: DragAnchor.pointer);

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

dart
Draggable draggable = Draggable();
draggable = Draggable(dragAnchorStrategy: childDragAnchorStrategy);
draggable = Draggable(dragAnchorStrategy: pointerDragAnchorStrategy);

LongPressDraggable longPressDraggable = LongPressDraggable();
longPressDraggable = LongPressDraggable(dragAnchorStrategy: childDragAnchorStrategy);
longPressDraggable = LongPressDraggable(dragAnchorStrategy: pointerDragAnchorStrategy);

References

Documentación de la API:

Issues relevantes:

PRs relevantes:


ScrollBehavior.buildViewportChrome

#

Compatible con Flutter Fix: sí

El método ScrollBehavior.buildViewportChrome fue deprecado en v2.1.

Este método era utilizado por el widget Scrollable para aplicar un indicador de sobre-desplazamiento, como GlowingOverscrollIndicator, por defecto en las plataformas adecuadas. A medida que se han agregado más decoradores predeterminados, como las barras de desplazamiento, cada uno se ha dividido en métodos individuales para reemplazar buildViewportChrome.

Esto permite que las clases que extienden solo tengan que sobrescribir el decorador específico, a través de buildScrollbar o buildOverscrollIndicator, en lugar de necesitar reescribir código para mantener uno u otro.

Migration guide

Guía de migración detallada disponible

Código antes de la migración:

dart
final ScrollBehavior scrollBehavior = ScrollBehavior();
scrollBehavior.buildViewportChrome(context, child, axisDirection);

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

dart
final ScrollBehavior scrollBehavior = ScrollBehavior();
scrollBehavior.buildOverscrollIndicator(context, child, axisDirection);

References

Documento de diseño:

Documentación de la API:

Issues relevantes:

PRs relevantes:


Timeline

#

En versión estable: 3.7