Historial de cambios de Flutter 0.0.21 - 1.0.0
Página wiki archivada del historial de cambios, que contiene información de lanzamientos entre Flutter 0.0.21 y 1.0.0.
Esta página es un volcado de la antigua página del historial de cambios de la wiki de Flutter hasta que se publicaron las notas de lanzamiento de Flutter en flutter.dev.
Cambios hasta la versión 1.0.0 inclusive
#- Skia and engine rolls to address the following:
- Engine rolls to fix
- Varias correcciones a las herramientas de documentación, documentación y documentación que acompaña a las plantillas.
Cambios desde la v0.10.2
#-
flutter/engine#6883 - FlutterViewController ya no cargará la pantalla de inicio de tu aplicación de forma predeterminada. La implementación de esto se ha movido a un nuevo método
loadDefaultSplashScreenView. -
#23755 Se eliminó la dependencia directa de flutter_test en
package:test. Flutter ahora requiere la versión de test 1.5.1 y la versión de mockito 4.0.0.Cambio disruptivo:
#Esto requiere añadir una dependencia explícita a tu pubspec.yaml:
yamldev_dependencies: test: ^1.5.1 -
#24024 y flutter/engine#6760 Actualizado harfbuzz a 2.1.0, se mejoró significativamente el diseño de texto y se añadió soporte para zero-width-joiner (zwj) para obtener mejores emojis en iOS.
-
#23417 Proporcionar
nullcuando la configuración regional no esté disponible o no sea válida en lugar de_. -
#23583 Se mejoró el algoritmo de localización con soporte para scriptCodes y lista completa de configuraciones regionales preferidas, introduciendo cambios disruptivos en los callbacks cuando cambian las configuraciones regionales (se pasa una lista en lugar de una sola configuración regional).
v0.11.0
#- #23320 Añade soporte para el gesto de deslizar para volver en las transiciones entre páginas de las barras de navegación de Cupertino.
- #23320 Añade soporte para transiciones Hero a través de múltiples Navigators.
Cambios en la v0.10.2 (desde la v0.9.4) - beta 10
#v0.10.2
#- #23194 Añade CupertinoTextField, un campo de entrada de texto al estilo de iOS.
- #23221 Añade soporte RTL para las transiciones entre páginas de las barras de navegación de Cupertino.
v0.10.1
#- #22977 Reemplaza la mayoría de
Nullporvoid. Consulta el correo que propone este cambio. - #22985 Implementar una proyección ortográfica correcta
- #23104 Actualizar el mensaje de envoltura (wrapping)
- #22924 Soporte para inhabilitar el cursor (caret) interactivo y la selección de TextField
- #22870 Usar la nueva sintaxis de
mixinpara super-mixins - #22022 permitir la opción de línea de comandos "--project-name" en flutter create
- #23126 Enviar un evento Flutter.Navigation cada vez que ocurra una navegación.
- #23183 Corregir error donde la regla de compilación de gradle se volvía a ejecutar al cambiar de
- #22394 Corregir la simulación de resorte fuera de rango en ClampingScrollSimulation
- #23174 habilitar el lint prefer_void_to_null
- #23184 TextTheme.apply() no debería asumir campos de TextStyle que no sean nulos
- #23168 Añadidas traducciones al mongol (mn)
- #23167 Corregir la validación de formfield inhabilitada
- #23015 Finalizar la edición al presionar la tecla enter en un TextField de una sola línea
- #23021 Facilitar el uso de CocoaPods para Add2App en iOS
- #22825 corregir las matemáticas de Curves.bounceInOut
- #22977 Preferir void sobre null
- #22822 Añade callback para Long Press Up
- #18770 Añadir
disabledHinta DropdownButton - #21657 Hacer que AndroidView acepte fábricas de reconocedores de gestos.
- #22449 Añadir soporte para sombras de texto
- flutter/engine#6644 Añadir BoxHeightStyle and BoxWidthStyle como argumentos a Paragraph.getBoxesForRange() para obtener varios estilos de cajas contenedoras.
- Actualización de Skia que cambia la implementación de bajo nivel de los desenfoques y el suavizado (anti-aliasing), lo que puede romper las pruebas visuales (golden tests).
v0.9.7
#- flutter/engine#6393 añade anotaciones de nulabilidad a MethodChannel/MethodCall en Android.
v0.9.6
#- #21251 añade CupertinoDatePicker, un control selector al estilo de iOS que admite un modo de fecha y un modo de fecha + hora.
Cambios en la v0.9.4 (desde la v0.8.2 ) - beta 9
#v0.9.4
#- #21715, La transición predeterminada de MaterialPageRoute ahora está definida por el Theme. Se añadió soporte (opcional) para las transiciones de página al estilo de Android P. Se eliminó el soporte de MaterialPageRoute para "alojar" otra ruta con el fin de reutilizar su método buildTransitions() porque los PageTransitionsBuilders, incluyendo CupertinoPageTransitionBuilder, son objetos independientes.
v0.9.3
#- #22108 cambió ligeramente la salida de
flutter doctor, lo que podría afectar a los scripts automatizados que dependían de la salida exacta.
v0.9.2
#- #21540 añadió un método
transform()aAnimatable. Está implementado porTween(la subclase principal deAnimatable) pero las clases que heredan deAnimatabledirectamente necesitarán implementarlo. Por lo general, el métodoevaluate()existente se puede cambiar para implementartransform()en su lugar, utilizando el valor dado por el argumento detransform()en lugar del valor actual de la animación proporcionado aevaluate().evaluate()ahora tiene una implementación predeterminada que delega entransform().
Cambios en la v0.8.2 (desde la v0.7.3) - beta 8
#v0.7.4
#- #20322 realiza transiciones de paralaje entre
CupertinoNavigationBars yCupertinoSliverNavigationBars al navegar entre páginas.
Cambios en la v0.7.3 (desde la v0.6.0) - beta 7
#v0.7.3
#- #20966 añade
CupertinoTimerPicker.
v0.7.2
#- #20929 corrige un error por el cual
CupertinoPageScaffoldno ajustaba su contenido al mostrarse el teclado.
v0.7.1
#- #19637
CupertinoNavigationBaryCupertinoSliverNavigationBarahora autocompletan sus etiquetas de título y botón de retroceso basándose en suCupertinoPageRoute.title.
Cambios en la v0.6.0 (desde la v0.5.1) - beta 6
#v0.6.0
#- Dart SDK actualizado a una compilación de Dart 2 (2.1.0-dev.0.0). Los autores de paquetes y complementos deben asegurarse de que sus archivos
pubspec.yamlincluyan una restricción de SDK de Dart con un límite superior de<3.0.0. Consulta la publicación sobre cómo prepararse para Dart 2 para más detalles. - #19025 renombró
CupertinoRefreshControlaCupertinoSliverRefreshControlpor consistencia. - #19317 Añadir cursorWidth y cursorRadius al cursor de TextField (Material).
- #20116 redujo los tamaños de los binarios de lanzamiento en aproximadamente 2 MB
- #20267 añade `CupertinoSegmentedControl'.
- #19232 añade
CupertinoActionSheetpara hojas emergentes inferiores al estilo de iOS. - #20101 mejora la fidelidad visual de
CupertinoScrollbardurante los sobre-desplazamientos (overscrolls). - #19789 añade soporte para desplazamiento infinito y desplazamiento en bucle para
CupertinoPicker. - #18381 mejora la fidelidad visual de
CupertinoAlertDialog.
v0.5.8
#- #19284 añade soporte multi-columna de
CupertinoPickerpara proyección cilíndrica fuera del eje.
v0.5.7
#- #18469 añadió un
CupertinoApppara crear aplicaciones con estilo de iOS.
v0.5.6
#- #18614 añadió
isInstanceOfcomo una función exportada desde Flutter, porque package:matcher ha marcado como obsoleta su implementación deisInstanceOf. - flutter/engine#5517 habilitó la bandera de Dart
--sync-async.
v0.5.5
#- #18488 hizo obligatorio el argumento
--debug-portparaflutter trace, debido a que el comportamiento anterior no era confiable y causaba pruebas inestables.
v0.5.2
#- #18096 cambió el renderizado del contador de caracteres en los campos de texto para aproximarlo más a las especificaciones de Material Design.
Cambios en la v0.5.1 (desde la v0.3.2) - beta 5
#v0.5.0
#-
#17661 cambió el diseño y tamaño de
ListTilepara ajustarse mejor a las últimas especificaciones de Material Design. -
#17620 reduce ligeramente las dimensiones predeterminadas de
Checkbox,Radio, ySwitchpara ajustarse mejor a las últimas especificaciones de Material Design. -
#17637 actualiza
Checkbox,Radio, ySwitchpara usar elThemeDatatoggleableActiveColor. Si estás utilizando un tema claro y no especificas unaccentColoren tuThemeData, estos controles ahora utilizarán un tono de mayor contraste de la paleta primaria. -
#17586 añadió una nueva propiedad
backgroundaTextStyle. Las subclases deben asegurarse de que esta propiedad se maneje en los constructores y encopyWith.
Cambios en la v0.4.4 (desde la v0.3.2) - beta 4
#v0.4.0
#-
#17021 añadió desplazamiento implícito de accesibilidad para iOS. Para esto, los viewports definen una extensión de caché antes del borde inicial así como después del borde final, y se espera que los slivers proporcionen información semántica si caen dentro de la extensión de caché.
Cambio disruptivo
#Con este cambio, los hijos de un viewport que actualmente no son visibles en el viewport se consideran fuera de escena (off-stage). Para encontrarlos en una prueba, especifica
skipOffstage: falseen el Finder.
v0.3.6
#-
#17094 introdujo la posibilidad de realizar pruebas de imágenes de referencia (golden image testing) en pruebas de widgets. Dentro de una prueba de widget, ahora puedes usar el siguiente matcher para asegurarte de que la imagen rasterizada de tu widget coincida con un archivo de referencia (por ejemplo,
foo.png):dartawait expectLater(find.byType(MyWidget), matchesGoldenFile('foo.png'));Cambio disruptivo
#Una de las consecuencias de este cambio es que todas las pruebas ejecutadas a través de
flutter testahora dependen explícitamente depackage:flutter_test. Los usuarios deflutter testnecesitarán actualizar su archivopubspec.yamlpara incluir lo siguiente si aún no existe:yamldev_dependencies: flutter_test: sdk: flutterSi tu
pubspec.yamlno contiene la dependencia requerida y ejecutasflutter test, verás errores con el siguiente formato:compiler message: Error: Could not resolve the package 'flutter_test' in 'package:flutter_test/flutter_test.dart'.
v0.3.3
#-
flutter/engine#5060 introdujo la posibilidad de codificar una
dart:ui Imagea PNG a través deImage.toByteData(). Los llamadores que deseen obtener bytes codificados pueden pasar elformatargumento, de esta manera:dartimage.toByteData(format: ui.ImageByteFormat.png);
Cambios en la v0.3.2 (desde la v0.3.1) - beta 3
#Cambios en la v0.3.1 (desde la v0.2.8) - actualización de beta 2
#Somos conscientes de un problema potencial con la validación de certificados en la implementación de HttpClient.
Para seguir nuestra investigación, consulta el problema de Dart 32936.
v0.3.1
#-
flutter/engine#4932 introdujo una nueva API de integración de shell con numerosas características nuevas. En particular, un solo proceso ahora puede albergar múltiples shells de Flutter.
-
flutter/engine#4762 y flutter/engine#5008 introdujeron
Image.toByteData(), que se utiliza para obtener los bytes RGBA en bruto de una instancia deImageendart:ui. -
#16721 El inicio del movimiento de desplazamiento en iOS se ha ajustado para evitar un salto cuando el desplazamiento comienza a moverse y para reflejar más fielmente el comportamiento nativo.
v0.2.11
#- #16039 y #16447
revisaron sustancialmente la implementación de
Chip, añadieron nuevos tipos de chips:InputChip,ChoiceChip,FilterChip,ActionChip, y actualizaron la apariencia de los chips.
v0.2.9
#- #16187 actualizó la forma y elevación del widget
Card.
Cambios en Dart desde la v0.2.8 de Flutter
#dart:async: Se eliminó el parámetro obsoletodefaultValueenStream.firstWhereyStream.lastWhere.dart:core: Se añadió el método estáticotryParseaint,double,num,BigInt,UriyDateTime, y se marcó como obsoleto el parámetroonErrorenint.parse,double.parse, ynum.parse.- La palabra clave
newahora siempre se puede omitir. La palabra claveconstes necesaria para crear una expresión constante, aunque dentro de la expresión, las palabras claveconstadicionales también se pueden omitir.
Cambios en la v0.2.8 (desde la v0.2.3) - beta 2
#v0.2.8
#- #16040 añade una API para permitir que la pestaña actual de
CupertinoTabScaffoldse cambie programáticamente a través delcurrentIndexde suCupertinoTabBar.
v0.2.5
#-
#15416 eliminó
package:httpde Flutter y reemplazó todos los usos con elHttpClientdedart:io. Si utilizaspackage:http, debes agregarlo como una dependencia en tupubspec.yamlpara continuar usándolo.createHttpClient()también se eliminó tras marcarse como obsoleta. Para cambiar la forma en que el framework crea clientes http, puedes utilizar HttpOverrides dedart:iopara proporcionar tu propio callbackcreateHttpClient()de forma global o por zona.Hay más detalles disponibles en el anuncio.
-
#15871 cambió la configuración predeterminada del
AndroidManifest.xmlcreado porflutter create. "screenLayout" y "density" ahora se incluyen por defecto en el atributo configChanges, lo que evita que las aplicaciones de Flutter se reinicien cuando estos cambian. -
#15324 añade un nuevo widget CupertinoRefreshControl con el estilo del patrón pull-to-refresh de iOS. Demostración disponible en Flutter Gallery.
v0.2.4
#-
#15565 activó el modo Dart 2 de forma predeterminada. Para ejecutar en el modo Dart 1, todavía puedes usar
--no-preview-dart-2.Hay más detalles disponibles en el anuncio.
-
#15537 eliminó SemanticsSortOrder. A partir de ahora, la ordenación del recorrido se realiza únicamente entre nodos hermanos.
Hay más detalles disponibles en el anuncio.
-
#15484 cambió el significado del parámetro del constructor
initialValuedeTextFormField.El parámetro initialValue de TextFormField ya no inicializa de forma incondicional la propiedad text de su TextEditingController. Si creas un TextFormField y proporcionas un controlador, el valor de initialValue debe ser null, que ahora es el valor predeterminado. Si vas a proporcionar un controlador, puedes especificar su valor de texto inicial con la propiedad text de TextEditingController.
Antes
#new TextFormField( initialValue: 'Hello World', controller: _myTextEditingController, );
Después
#new TextFormField( controller: _myTextEditingController ..text = 'Hello World', ) // O más comúnmente: _myTextEditingController = new TextEditingController( text: 'Hello World', ); new TextFormField( controller: _myTextEditingController, );
-
#15303 actualizó la función
showDialogpara que reciba un builder y marcó como obsoleto el parámetrowidget.Antes
#showDialog(context: context, child: new Text('hello'))
Después
#showDialog(context: context, builder: (BuildContext context) => new Text('hello'))
-
#15265 actualizó
ThemeDatapara usar el color primario de unMaterialColoren lugar de utilizar incondicionalmente el tono 500 para temas claros. Los valores de color permanecen sin cambios.Antes
#expect(widget.color, Colors.blue.shade500) // color primario
Después
#expect(widget.color, Colors.blue) // color primario
-
#15548 añade las banderas de depuración
debugDisableClipLayers,debugDisablePhysicalShapeLayersydebugDisableOpacityLayerspara ayudar con el diagnóstico de rendimiento de la velocidad de rasterización.
Cambios en la v0.2.3 (desde la v0.1.5) - actualización de beta 1
#v0.2.0
#-
flutter/engine#4742 actualizó los recursos para que se lean directamente del APK en Android. Como resultado, ya no se admiten barras iniciales en las rutas de los recursos de imágenes:
Antes
#new Image.asset('/foo/bar.png')
Después:
#new Image.asset('foo/bar.png')
v0.1.9
#- #14901 Una actualización visual de Slider
cambió los colores, las opacidades, y la forma y comportamiento del indicador de valor. También eliminó la bandera "
thumbOpenAtMin" de la clase Slider, que ya no es necesaria y se puede emular mediante el soporte de forma de controlador (thumb) personalizada.
Cambios en la v0.1.5 (desde la v0.1.4) - beta 1.1
#v0.1.5
#Cambios en la v0.1.4 (desde la v0.0.20) - beta 1
#v0.1.3
#- #14702 eliminó el getter
engineDartVersionde la claseVersionde la herramienta flutter.
v0.1.1
#-
flutter/engine#4607 y #14601 eliminaron los constructores predeterminados de las siguientes clases de
dart:ui:CodecFrameInfoGradientImageParagraphPictureSceneSemanticsUpdateShader
Se eliminaron los constructores predeterminados para evitar la creación de instancias no inicializadas de estas clases (y, en ciertos casos, para evitar la extensión de estas clases). Estas clases deben ser instanciadas únicamente por el motor de Flutter o a través de constructores con nombre (si se proporcionan).
v0.0.24
#-
#14410 incluyó un cambio disruptivo en la API de
ButtonTheme:- Los constructores
ButtonTheme()yButtonTheme.bar()ya no se pueden construir comoconst ButtonTheme.textThemeahora esButtonTheme.data.textThemeButtonTheme.minWidthahora esButtonTheme.data.minWidthButtonTheme.heightahora esButtonTheme.data.heightButtonTheme.paddingahora esButtonTheme.data.padding
- Los constructores
-
#14410 cambió la jerarquía de
FlatButtonyRaisedButton; ahora ambos heredan deRawMaterialButtonen lugar deMaterialButton. -
#14410 cambió
RaisedButtonpara que ya no proyecte una sombra cuando esté inhabilitado.
v0.0.23
#- #14343 revisó el funcionamiento de copiar, cortar y pegar para EditableText: la clase abstracta TextSelectionControls tiene nuevos métodos canCopy, canCut, etc., para determinar si esas acciones están disponibles. La interfaz TextSelectionDelegate ahora requiere un método adicional bringIntoView(TextPosition position) para desplazar una TextPosition a la parte visible de un TextField. Además, esa interfaz ya no es implementada por TextSelectionOverlay. En su lugar, debe usarse EditableTextState, que implementa esa interfaz. Consulta también: flutter-dev/IHPndyUDy0M
APIs de Sliver
#-
#14449 reemplaza el método
SliverGridLayout.estimateMaxScrollOffsetpor el métodoSliverGridLayout.computeMaxScrollOffset. Este nuevo método debe reportar un valor preciso, no solo una estimación. Esto fue necesario para corregir un error por el cual unSliverGridfinito no podía manejar el desplazamiento fuera de la parte superior de la pantalla (porque no teníamos forma de determinar cuánto contenido tenía).Por razones similares, la interfaz
RenderSliverBoxChildManagertiene un nuevo getter,childCount, que debe devolver un valor no nulo sicreateChildpuede devolver null. En la práctica, es inusual implementar esta interfaz, por lo que esto no debería tener ningún efecto. Es más común implementar el equivalente en la capa de widgets,SliverChildDelegate. Esta interfaz ya tenía un getterestimatedChildCount. El getter sigue existiendo, aunque su semántica se ha ajustado un poco para requerir que el valor devuelto sea preciso si elbuildmétodo del delegado alguna vez devuelve null.
v0.0.21
#-
#13734, #14055, y #14177 revisaron sustancialmente los widgets de InputDecorator y otros asociados. El diseño de las partes del decorador de entrada ha cambiado un poco, lo que significa que el diseño interno de los campos de texto también ha cambiado. Las pruebas que dependan de la geometría interna de los campos de texto deberán actualizarse.
Además,
hideDivider: truedebe ser reemplazado por el nuevoborder: InputBorder.none. Esto es parte de nuestro esfuerzo por facilitar la personalización de cómo se renderizan las entradas; ahora también puedes proporcionar una subclase de InputBorder personalizada si tienes deseos particularmente novedosos para la decoración de tu entrada. -
#4528 y #14011 marcaron como obsoleto el soporte para enteros grandes en los códecs de mensajes/métodos de canales de plataforma estándar, para dejar de estar disponible tras un período de gracia de cuatro semanas. Este cambio es consecuencia de la transición a Dart 2.0, donde el tipo
intya no es de tamaño ilimitado. -
#4487 reemplaza todos los usos del concepto de callback
RequestPermissionResultenio.flutter.plugin.common.PluginRegistryconRequestPermissionsResult, agregando una letrasque faltaba para alinearse con el concepto correspondiente del SDK de Android.La API antigua se ha marcado como obsoleta y dejará de estar disponible en una versión posterior. Habrá un período de gracia de al menos cuatro semanas entre la versión que introduce la obsolescencia y la versión que hace que la API antigua deje de estar disponible.
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.