Saltar al contenido principal

Reorganización de los builders de transición de página

CupertinoPageTransitionsBuilder se ha trasladado de la librería Material a la librería Cupertino, a la que pertenece.

Resumen

#

CupertinoPageTransitionsBuilder se ha reubicado de package:flutter/material.dart a package:flutter/cupertino.dart.

Contexto

#

Flutter proporciona varios generadores de transiciones de página que controlan cómo se animan las rutas al navegar entre páginas. Estos generadores se utilizan con PageTransitionsTheme para personalizar las transiciones por plataforma.

Los generadores de transiciones de página disponibles son:

BuilderLibreríaDescripción
FadeUpwardsPageTransitionsBuilder Material Transición por defecto antes de Material 3
OpenUpwardsPageTransitionsBuilder Material Transición de deslizamiento vertical
ZoomPageTransitionsBuilder Material Transición de zoom (predeterminada en Material 3)
PredictiveBackPageTransitionsBuilder Material Soporte para el gesto predictivo de retroceso de Android
CupertinoPageTransitionsBuilder Cupertino Transición de deslizamiento horizontal al estilo iOS

Anteriormente, CupertinoPageTransitionsBuilder estaba definido en la librería Material junto con los demás generadores. Esta clase es semánticamente un componente Cupertino porque su implementación utiliza mixins de transición de Cupertino y proporciona animaciones de navegación al estilo iOS.

Este movimiento mejora la organización del código y permite que las aplicaciones Cupertino utilicen este generador sin depender de la librería Material.

Guía de migración

#

Si utilizas CupertinoPageTransitionsBuilder y solo importas package:flutter/material.dart, agrega una importación para package:flutter/cupertino.dart.

Código antes de la migración:

dart
import 'package:flutter/material.dart';

final pageTransitionsTheme = PageTransitionsTheme(
  builders: {
    TargetPlatform.android: ZoomPageTransitionsBuilder(),
    TargetPlatform.iOS: CupertinoPageTransitionsBuilder(),
  },
);

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

dart
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

final pageTransitionsTheme = PageTransitionsTheme(
  builders: {
    TargetPlatform.android: ZoomPageTransitionsBuilder(),
    TargetPlatform.iOS: CupertinoPageTransitionsBuilder(),
  },
);

Si tu aplicación ya importa ambos paquetes, no se necesitan cambios.

Timeline

#

Introducido en la versión: 3.43.0-0.1.pre
En la versión estable: 3.44

Referencias

#

PRs relevantes: