API desaprobada eliminada después de la v3.10
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 desaprobación de Flutter, se han eliminado las API desaprobadas que llegaron al final de su vida útil después del lanzamiento estable 3.10.
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 el paquete y la clase afectada.
ThemeData.fixTextFieldOutlineLabel
#Paquete: flutter Compatible con Flutter Fix: sí
ThemeData.fixTextFieldOutlineLabel fue desaprobada en la v2.5.
Se pueden eliminar las referencias a esta propiedad.
El flag fixTextFieldOutlineLabel era un flag de migración temporal que permitía a los usuarios
migrar gradualmente a un nuevo comportamiento en lugar de experimentar un cambio brusco.
Antes de desaprobarse, esta propiedad se transicionó al nuevo valor predeterminado a partir del
arreglo a la etiqueta para campos de texto.
Migration guide
Código antes de la migración:
var themeData = ThemeData(
fixTextFieldOutlineLabel: true,
);
Código después de la migración:
var themeData = ThemeData(
);
References
Documentación de la API:
PRs relevantes:
OverscrollIndicatorNotification.disallowGlow
#Paquete: flutter Compatible con Flutter Fix: sí
OverscrollIndicatorNotification.disallowGlow fue desaprobada en la v2.5.
El reemplazo es el método disallowIndicator.
El método disallowIndicator se creó como reemplazo del método original
con la introducción de StretchingOverscrollIndicator. Anteriormente,
el GlowingOverscrollIndicator era el único tipo que enviaba
OverscrollIndicatorNotifications, por lo que el método se actualizó para reflejar
mejor múltiples tipos de indicadores.
Migration guide
Código antes de la migración:
bool _handleOverscrollIndicatorNotification(OverscrollIndicatorNotification notification) {
notification.disallowGlow();
return false;
}
Código después de la migración:
bool _handleOverscrollIndicatorNotification(OverscrollIndicatorNotification notification) {
notification.disallowIndicator();
return false;
}
References
Documentación de la API:
PRs relevantes:
ColorScheme primaryVariant y secondaryVariant
#Paquete: flutter Compatible con Flutter Fix: sí
ColorScheme.primaryVariant y ColorScheme.secondaryVariant fueron desaprobados
en la v2.6. Los reemplazos son ColorScheme.primaryContainer y
ColorScheme.secondaryContainer, respectivamente.
Estos cambios se realizaron para alinearse con la especificación de Material Design actualizada
para ColorScheme. Las actualizaciones de ColorScheme se detallan más ampliamente en
el documento de diseño ColorScheme para Material 3.
Migration guide
Código antes de la migración:
var colorScheme = ColorScheme(
primaryVariant: Colors.blue,
secondaryVariant: Colors.amber,
);
var primaryColor = colorScheme.primaryVariant;
var secondaryColor = colorScheme.secondaryVariant;
Código después de la migración:
var colorScheme = ColorScheme(
primaryContainer: Colors.blue,
secondaryContainer: Colors.amber,
);
var primaryColor = colorScheme.primaryContainer;
var secondaryColor = colorScheme.secondaryContainer;
References
Documento de diseño:
Documentación de la API:
PRs relevantes:
ThemeData.primaryColorBrightness
#Paquete: flutter Compatible con Flutter Fix: sí
ThemeData.primaryColorBrightness fue desaprobada en la v2.6, y no ha sido usada
por el framework desde entonces. Se deben eliminar las referencias. El Brightness
ahora se extrapola de ThemeData.primaryColor si ThemeData.brightness
no se ha proporcionado explícitamente.
Este cambio se realizó como parte de la actualización de Theme para coincidir con las nuevas directrices de
Material Design. La actualización general del sistema de temas, incluyendo la
eliminación de primaryColorBrightness, se analiza con más detalle en el
documento de diseño Material Theme System Updates.
Migration guide
Código antes de la migración:
var themeData = ThemeData(
primaryColorBrightness: Brightness.dark,
);
Código después de la migración:
var themeData = ThemeData(
);
References
Documento de diseño:
Documentación de la API:
PRs relevantes:
Actualizaciones de RawScrollbar y subclases
#Paquete: flutter Compatible con Flutter Fix: sí
La propiedad isAlwaysShown de RawScrollbar, Scrollbar,
ScrollbarThemeData y CupertinoScrollbar fue desaprobada en la v2.9. El
reemplazo en todos los casos es thumbVisibility.
Este cambio se realizó debido a que isAlwaysShown siempre se refería al indicador
del scrollbar. Con la adición de una pista de scrollbar y configuraciones variables para
su visibilidad en respuesta al desplazamiento y arrastre del mouse, renombramos esta
propiedad para una API más clara.
Además, Scrollbar.hoverThickness también fue desaprobada en la v2.9. Su
reemplazo es el MaterialStateProperty ScrollbarThemeData.thickness.
Este cambio se realizó para permitir que el grosor de un Scrollbar responda a todo
tipo de estados, incluyendo y más allá de solo pasar el cursor (hovering). El uso de
MaterialStateProperties también coincide con la convención de la biblioteca material de
configurar widgets según su estado, en lugar de enumerar propiedades para
cada permutación de estados interactivos.
Migration guide
Código antes de la migración:
var rawScrollbar = RawScrollbar(
isAlwaysShown: true,
);
var scrollbar = Scrollbar(
isAlwaysShown: true,
hoverThickness: 15.0,
);
var cupertinoScrollbar = CupertinoScrollbar(
isAlwaysShown: true,
);
var scrollbarThemeData = ScrollbarThemeData(
isAlwaysShown: true,
);
Código después de la migración:
var rawScrollbar = RawScrollbar(
thumbVisibility: true,
);
var scrollbar = Scrollbar(
thumbVisibility: true,
);
var cupertinoScrollbar = CupertinoScrollbar(
thumbVisibility: true,
);
var scrollbarThemeData = ScrollbarThemeData(
thumbVisibility: true,
thickness: MaterialStateProperty.resolveWith((Set<MaterialState> states) {
return states.contains(MaterialState.hovered) ? null : 15.0;
}),
);
References
Documentación de la API:
PRs relevantes:
AnimationSheetBuilder display y sheetSize
#Paquete: flutter_test Compatible con Flutter Fix: sí
Los métodos display y sheetSize de AnimationSheetBuilder fueron desaprobados
en la v2.3. El reemplazo es el método collate.
El paso de salida de AnimationSheetBuilder antes requería que se llamaran a estos dos métodos,
pero ahora se ha simplificado a través de una sola llamada a collate.
La función collate junta directamente las imágenes y devuelve una imagen de manera
asíncrona. Requiere menos código repetitivo y produce imágenes más pequeñas
sin comprometer la calidad.
Migration guide
Guía de migración detallada disponible
Código antes de la migración:
final AnimationSheetBuilder animationSheet = AnimationSheetBuilder(
frameSize: const Size(40, 40)
);
await tester.pumpFrames(animationSheet.record(
const Directionality(
textDirection: TextDirection.ltr,
child: Padding(
padding: EdgeInsets.all(4),
child: CircularProgressIndicator(),
),
),
), const Duration(seconds: 2));
tester.binding.setSurfaceSize(animationSheet.sheetSize());
final Widget display = await animationSheet.display();
await tester.pumpWidget(display);
await expectLater(
find.byWidget(display),
matchesGoldenFile('material.circular_progress_indicator.indeterminate.png'),
);
Código después de la migración:
final AnimationSheetBuilder animationSheet = AnimationSheetBuilder(
frameSize: const Size(40, 40)
);
await tester.pumpFrames(animationSheet.record(
const Directionality(
textDirection: TextDirection.ltr,
child: Padding(
padding: EdgeInsets.all(4),
child: CircularProgressIndicator(),
),
),
), const Duration(seconds: 2));
await expectLater(
animationSheet.collate(20),
matchesGoldenFile('material.circular_progress_indicator.indeterminate.png'),
);
References
Documentación de la API:
PRs relevantes:
Lógica de timeout de flutter_test
#Paquete: flutter_test Compatible con Flutter Fix: no
Las siguientes API relacionadas con la lógica de timeout en las pruebas fueron desaprobadas
en la v2.6. No hay reemplazos y las referencias deben eliminarse, excepto para
el parámetro initialTimeout de testWidgets, que se reemplaza mediante el uso de
timeout.
TestWidgetsFlutterBinding.addTime- Método
TestWidgetsFlutterBinding.runAsync- parámetroadditionalTime - Método
TestWidgetsFlutterBinding.runTest- parámetrotimeout - Método
AutomatedTestWidgetsFlutterBinding.runTest- parámetrotimeout - Método
LiveTestWidgetsFlutterBinding.runTest- parámetrotimeout - Método
testWidgets- parámetroinitialTime
Se descubrió que estos causaban inestabilidad en las pruebas, y no estaban siendo utilizados por los clientes que las realizaban.
Desde que fueron desaprobados, el uso de estos parámetros no ha tenido ningún efecto en las pruebas, por lo que eliminar las referencias no debería tener ningún efecto en las bases de código existentes.
Migration guide
Código antes de la migración:
testWidgets('Test', (_) {}, initialTimeout: Duration(seconds: 5));
Código después de la migración:
testWidgets('Test', (_) {}, timeout: Timeout(Duration(seconds: 5)));
References
Documentación de la API:
testWidgets-
TestWidgetsFlutterBinding -
AutomatedTestWidgetsFlutterBinding -
LiveTestWidgetsFlutterBinding
PRs relevantes:
Timeline
#En versión estable: 3.13.0
A menos que se indique lo contrario, la documentación de este sitio refleja Flutter 3.44.0. Página actualizada por última vez el 2026-05-05. Ver código fuente oreportar un problema.