Saltar al contenido principal

Cambios importantes y obsolescencias

Una lista de cambios importantes por versión en Dart.

Esta página enumera todos los cambios importantes y obsolescencias en las actualizaciones del SDK de Dart, organizados por versión y área, para ayudar a los desarrolladores de Dart a comprender y gestionar su impacto. Las notas completas de la versión están disponibles en el changelog del SDK de Dart. El documento de la política de cambios importantes describe la política y el proceso en torno a los cambios importantes y las obsolescencias en Dart.

Esta página incluye los siguientes tipos de cambios importantes:

No versionados

El SDK de Dart no mantiene la compatibilidad hacia atrás, y el código podría romperse tan pronto como actualices la versión de tu SDK si depende del comportamiento anterior.

Estos representan la mayoría de los cambios y no están marcados especialmente en esta lista.

Versionados por lenguaje

El SDK de Dart mantiene la compatibilidad hacia atrás para el código existente, y el cambio de comportamiento solo surte efecto (rompiendo potencialmente el código que depende del comportamiento anterior) cuando actualizas la versión de lenguaje de tu código.

These are marked as: Con versión de lenguaje

Obsolescencias

El SDK de Dart mantiene la compatibilidad para el código obsoleto, con una advertencia. Las obsolescencias se eliminan por completo en una versión posterior, rompiendo cualquier código que dependa del comportamiento anterior.

These are marked as: Obsoleto / Eliminado

Experimental

Parte de la versión pero aún no tratado como estable en el SDK y puede romperse de una versión a otra. Los cambios experimentales no siempre tienen un problema de cambio importante correspondiente, pero podrían tener más detalles en el changelog del SDK.

Estos están marcados: Experimental

Si tienes preguntas o inquietudes sobre cualquiera de estos cambios importantes, por favor comenta en el hilo del cambio importante enlazado desde la entrada correspondiente. Para recibir notificaciones sobre futuros cambios importantes, únete al grupo Dart announce.

3.13.0

#

Bibliotecas

#

dart:io

#
  • NetworkInterface.addresses ahora devuelve List<InterfaceAddress> en lugar de List<InternetAddress>. El nuevo subtipo InterfaceAddress de InternetAddress expone un campo prefixLength y un getter broadcast. El código que implementa NetworkInterface y sobrescribe addresses debe actualizar el tipo de retorno.

dart:js_interop

#
  • JSFunction y JSExportedDartFunction ahora son genéricos. JSExportedDartFunction<T>.toDart ahora convierte (cast) la función envuelta original al argumento de tipo T, e isA<JSExportedDartFunction<T>> ahora también comprueba que la función envuelta es de tipo T. Los tipos en tiempo de ejecución de JSFunction y JSExportedDartFunction no cambian.

Herramientas

#

Formateador (dart format)

#
  • Se dejó de añadir una línea en blanco antes de un comentario al final de una unidad de compilación o de un cuerpo entre llaves.

  • Las cláusulas de representación de tipo de extensión (extension type) ahora se formatean de la misma manera que las listas de parámetros formales del constructor primario.

  • Cuando se conservan las comas finales, ya no se inserta una nueva línea antes del ; en un enum con miembros a menos que haya una coma final.

  • Se corrigió un error por el cual algunas colecciones o argumentos podían dividirse innecesariamente.

  • Versionados por lenguaje Las listas de parámetros ahora pueden formatearse en bloque.

  • Versionados por lenguaje Las expresiones as, is e is! ahora pueden formatearse en bloque.

  • Versionados por lenguaje Se añaden líneas en blanco alrededor de las declaraciones de mixin y de extension type si no tienen un cuerpo con ;.

Tiempo de ejecución

#
  • Eliminado Ya no se incluyen los certificados raíz de respaldo incorporados que se utilizaban cuando no se encontraban los certificados del sistema. Si no se encuentran los certificados del sistema, utiliza las opciones --root-certs-file o --root-certs-cache para proporcionar certificados de respaldo a la Dart VM independiente.

3.12.0

#

Bibliotecas

#

dart:js_interop

#
  • El método de extensión isA se ha movido de JSAnyUtilityExtension a NullableObjectUtilExtension para admitir la comprobación de tipos de cualquier Object?. Este cambio solo es importante si te referías al nombre de la extensión directamente, ya sea aplicando la extensión directamente o mediante las directivas show o hide.
  • isA<JSObject>() ahora maneja correctamente los objetos JS sin prototipos, e isA<JSAny>() realiza una comprobación no trivial de que el valor es un valor JS.
  • isA<JSExportedDartFunction>() ahora comprueba si la función es realmente una función envoltura de JS que se devuelve desde Function.toJS o Function.toJSCaptureThis.

Herramientas

#

Pub

#
  • dart pub cache repair ahora solo repara los paquetes referenciados por el archivo pubspec.lock del proyecto actual de forma predeterminada. Para reparar todos los paquetes en la caché de pub como en versiones anteriores, pasa la nueva bandera --all.

Compilador Wasm (dart2wasm)

#
  • La API del cargador de módulos de carga diferida (deferred loading) se ha actualizado para permitir la obtención por lotes de módulos diferidos. El embebedor ahora toma loadDeferredModules en lugar de loadDeferredModule, where la nueva función debe esperar una matriz (array) de nombres de módulos en lugar de nombres de módulos individuales. Todas las funciones de carga de módulos ahora también deben aceptar un callback instantiator al que deben pasar los resultados cargados.

Compilador de producción JavaScript (dart2js)

#
  • JSExportedDartFunction.toDart ahora lanza una excepción si la función JS envoltura (wrapper) no fue resultado de Function.toJS o Function.toJSCaptureThis, para ser consistente con DDC y dart2wasm. Anteriormente, a veces devolvía incorrectamente la función Dart original incluso si la función JS envoltura se convertía (cast) desde una llamada a la función obsoleta allowInterop.

3.11.0

#

Herramientas

#

Analizador

#

Compilación Wasm (dart compile wasm)

#
  • Eliminado El código que importa dart:js_util o package:js ahora da como resultado un error de compilación al compilar a WebAssembly.

    La invocación de cualquier API de estas bibliotecas dará como resultado un error en tiempo de ejecución. Los usos deben migrarse a dart:js_interop y dart:js_interop_unsafe.

3.10.0

#

Lenguaje

#
  • Las funciones generadoras sync* y async* sin un retorno especificado ahora infieren correctamente los tipos de retorno como no nulables cuando no se produce ningún valor null. Esto podría activar nuevos diagnósticos relacionados con elementos de código innecesarios, como un operador de acceso condicional de nulos innecesario (?.).

Bibliotecas

#

dart:core

#
  • Las funciones Uri.parseIPv4Address y Uri.parseIPv6Address ya no permiten incorrectamente ceros a la izquierda en las direcciones IPv4.

  • Obsoleto La capacidad de implementar RegExp y RegExpMatch está obsoleta y se eliminará en una versión futura.

dart:io

#

dart:js_interop

#
  • La extensión Uint16ListToJSInt16Array ha sido renombrada a Uint16ListToJSUint16Array.

  • La extensión JSUint16ArrayToInt16List ha sido renombrada a JSUint16ArrayToUint16List.

  • La función Function.toJSCaptureThis ahora produce comprobaciones adicionales en tiempo de compilación para coincidir con Function.toJS. Si la función no tiene un tipo estáticamente conocido, tiene tipos no admitidos en su firma, incluye parámetros de tipo, o tiene algún parámetro con nombre, la llamada dará como resultado un error en tiempo de compilación.

Herramientas

#

SDK

#
  • La CLI de dart y la Dart VM son ahora ejecutables separados, llamándose dartvm al ejecutable y proceso de la Dart VM pura. Los programas de Dart aún deben ejecutarse con dart run.

  • Los subcomandos de la herramienta dart, como dart format y dart compile ahora ejecutan snapshots compilados con AOT de las herramientas subyacentes. No debería haber diferencias funcionales aparte de las mejoras de rendimiento, pero si encuentras incompatibilidades, por favor infórmalas.

  • Eliminado La herramienta dart ya no está disponible para plataformas IA32, ya que el SDK de Dart ya no es compatible con IA32.

Analizador

#
  • El uso de miembros marcados como @experimental fuera del paquete en el que están declarados ahora genera una advertencia.

  • Las reglas de linter habilitadas en los archivos de opciones de análisis incluidos ahora producen diagnósticos de linter incompatibles cuando corresponde.

  • Eliminado La anotación obsoleta @required de package:meta ya no es compatible. Para marcar un parámetro como requerido, utiliza en su lugar la palabra clave required.

Compilación Wasm (dart compile wasm)

#
  • dart:js_util y package:js ya no son compatibles al compilar a WebAssembly. La invocación de cualquier API de estas bibliotecas dará como resultado un error en tiempo de ejecución. Los usos deben migrarse a dart:js_interop y dart:js_interop_unsafe.

  • Para coincidir con los compiladores de JS, dartify, al compilarse a Wasm, ahora convierte los objetos JS Promise en objetos Dart Future en lugar de objetos Dart JSValue.

3.9.0

#

Lenguaje

#
  • Versionados por lenguaje Ahora se asume Null Safety al calcular la promoción de tipos, la alcanzabilidad y la asignación definitiva. Como resultado, un análisis de código muerto mejorado podría hacer que se activen nuevos diagnósticos del analyzer en el código existente que antes superaba el análisis.

Herramientas

#
  • Algunos subcomandos de la herramienta dart, como dart analyze y dart fix ahora ejecutan snapshots compilados con AOT de las herramientas subyacentes. No debería haber diferencias funcionales aparte de las mejoras de rendimiento, pero si encuentras incompatibilidades, por favor infórmalas.

Pub

#
  • Versionados por lenguaje Ahora se respeta el límite superior de la restricción del SDK de flutter en el paquete raíz de tu espacio de trabajo. Si tu SDK actual no cumple con el límite especificado, dart pub get y otras acciones que recuperan dependencias fallarán.

Dart build

#
  • Experimental Compilar un paquete de aplicación de CLI con soporte experimental para recursos nativos ahora requiere usar el subcomando dart build cli y especificar el punto de entrada de la aplicación con una nueva opción --target.

3.8.0

#

Bibliotecas

#

dart:html

#
  • Eliminado El constructor Element.created ha sido eliminado.
  • Las clases nativas en dart:html, como HtmlElement, ya no se pueden extender.

Herramientas

#

Analizador

#

Compilador de desarrollo JavaScript (DDC)

#
  • Ahora lanza un error en tiempo de ejecución cuando se realiza un tear-off de un constructor de fábrica de redirección y no se proporciona ningún valor a uno de sus parámetros opcionales no nulables. En el futuro, es probable que esto sea un error en tiempo de compilación.

Compilador de producción JavaScript (dart2js)

#
  • Experimental Eliminado Las banderas --experiment-new-rti y --use-old-rti ya no son compatibles.

Formateador (dart format)

#
  • Versionados por lenguaje El formateador realizó cambios y correcciones que producen un nuevo resultado al formatear código con una versión de lenguaje de 3.8 o superior.

3.7.0

#

Lenguaje

#

Bibliotecas

#

dart:html, dart:indexed:db, dart:svg, dart:web_audio, dart:web_gl, dart:js

#
  • Obsoleto Estas bibliotecas web heredadas están oficialmente obsoletas. Se espera que se eliminen en una versión futura. Los proyectos deben migrar para usar package:web y dart:js_interop. Para obtener más información, consulta Migrar a package:web.

dart:js, dart:js_util, package:js

#
  • Obsoleto Estas bibliotecas heredadas de interoperabilidad JS están oficialmente obsoletas. Se espera que se eliminen en una versión futura. Los proyectos deben migrar para usar dart:js_interop. Para obtener más información, consulta Uso de interoperabilidad JS.

Herramientas

#

Analizador

#
  • Eliminado Las reglas de linter package_api_docs y unsafe_html se han eliminado y deben eliminarse de los archivos analysis_options.yaml.

Formateador (dart format)

#
  • Versionados por lenguaje El formateador implementa un nuevo estilo que produce un nuevo resultado al formatear código con una versión de lenguaje de 3.7 o superior.
  • Eliminado La bandera --fix para dart format ya no es compatible. Para aplicar correcciones similares y más, configura tus opciones de análisis y ejecuta dart fix.
  • Obsoleto La opción --line-length para dart format se ha declarado obsoleta y está programada para eliminarse. Todos los usos deben migrarse a la nueva opción --page-width.

3.6.0

#

Lenguaje

#

Bibliotecas

#

dart:io

#

Herramientas

#

Analizador

#
  • Obsoleto Las reglas de linter package_api_docs y unsafe_html se han declarado obsoletas y están programadas para eliminarse en Dart 3.7.

Front-end del compilador (cfe)

#

Compilador Wasm (dart2wasm)

#
  • La condición dart.library.js ahora es false en las importaciones condicionales cuando se compila a WebAssembly. En su lugar, se debe utilizar la condición dart.library.js_interop.

Formateador (dart format)

#

Los siguientes cambios podrían producir pequeños cambios de formato al ejecutar dart format con un SDK de Dart 3.6 o posterior:

  • Conservar los parámetros de tipo en los parámetros formales con tipo de función de estilo antiguo que también usan this. o super..
  • Formatear correctamente importaciones con cláusulas as y if.

Pub

#
  • dart pub publish ahora advierte si los archivos que están siendo rastreados en git tienen cambios sin confirmar (uncommitted).

3.5.0

#

Lenguaje

#

Bibliotecas

#

dart:core

#

dart:io

#

dart:js_interop

#

dart:typed_data

#

Tiempo de ejecución

#
  • Eliminado The Dart VM no longer supports unsound null safety.
    • La opción CLI --no-sound-null-safety ha sido eliminada.
    • Las funciones Dart_NewListOf y Dart_IsLegacyType han sido eliminadas de la API de C.
  • Eliminado La función Dart_DefaultCanonicalizeUrl ha sido eliminada de la API de C.

3.4.0

#

Lenguaje

#

Bibliotecas

#

dart:cli

#

dart:html, dart:indexed:db, dart:svg, dart:web_audio, dart:web_gl

#
  • Obsoleto Estas bibliotecas ahora están marcadas como heredadas y tendrán menos soporte en el futuro. Los proyectos nuevos deberían preferir usar package:web y dart:js_interop. Para obtener más información, consulta Migrar a package:web.

dart:js

#
  • Obsoleto Esta biblioteca ahora está marcada como heredada y tendrá menos soporte en el futuro. Los usos deben migrarse a dart:js_interop y dart:js_interop_unsafe. Para obtener más información, consulta /go/next-gen-js-interop.

dart:js_util

#
  • Obsoleto Esta biblioteca ahora está marcada como heredada y tendrá menos soporte en el futuro. Los usos deben migrarse a dart:js_interop y dart:js_interop_unsafe. Para obtener más información, consulta /go/next-gen-js-interop.

dart:io

#

dart:typed_data

#

Herramientas

#

Compilador de producción JavaScript (dart2js)

#
  • Experimental Obsoleto Ahora debes especificar un formato para la opción de CLI --dump-info, ya sea binary o json. El formato json está obsoleto y podría eliminarse en una futura versión de Dart.

Compilador Wasm (dart2wasm)

#
  • Experimental Varios argumentos de CLI de dart compile wasm han sido actualizados, eliminados o reemplazados. Para obtener más información, ejecuta dart compile wasm --verbose --help.

Tiempo de ejecución

#
  • Eliminado La Dart VM ya no admite cadenas externas. Como resultado, las funciones Dart_IsExternalString, Dart_NewExternalLatin1String y Dart_NewExternalUTF16String han sido eliminadas de la API de C de Dart.

3.3.0

#

SDK

#
  • Experimental Eliminado Los siguientes experimentos ahora están retirados ya que fueron lanzados en Dart 3 y ya no son necesarios con una versión de lenguaje de 3.0 o superior. Su configuración debe ser eliminada de las opciones de análisis, comandos de CLI y configuraciones del IDE.

    • patterns
    • records
    • class-modifiers
    • sealed-class

Lenguaje

#

Bibliotecas

#

dart:cli

#
  • Experimental Obsoleto La función waitFor sigue estando obsoleta por otra versión más y está programada para su eliminación en Dart 3.4.

dart:ffi

#

dart:html

#
  • En lugar de utilizar HttpRequest directamente, ahora se recomienda utilizar package:http.

dart:io

#
  • En lugar de utilizar HttpClient directamente, ahora se recomienda utilizar package:http.

dart:js_interop

#
  • Experimental Los tipos JS como JSAny tienen nuevos tipos de representación específicos del compilador.
  • Experimental Las clases @staticInterop definidas por el usuario ya no pueden implementar JSAny o JSObject. Los usos deben migrarse a JSObject.fromInteropObject o definirse como tipos de extensión (extension types).
  • Experimental JSArray y JSPromise ahora tienen parámetros genéricos.
  • Experimental Varios miembros de extensión fueron movidos o renombrados. Para conocer las extensiones actualizadas, consulta JSAnyUtilityExtension y JSAnyOperatorExtension.

dart:typed_data

#

dart:nativewrappers

#

Herramientas

#

Compilador de producción JavaScript (dart2js)

#

Compilador Wasm (dart2wasm)

#

Analizador

#
  • Experimental Las directivas de comentarios de dart doc que no sean válidas ahora son reportadas por el analyzer.

  • Debido a las mejoras en la promoción de tipos, los siguientes diagnósticos del analyzer podrían activarse en el código existente que antes superaba el análisis:

    • unnecessary_non_null_assertion
    • unnecessary_cast
    • invalid_null_aware_operator

Linter

#
  • Se eliminaron las reglas de linter iterable_contains_unrelated_type y list_remove_unrelated_type. Considera migrar a la regla expandida collection_methods_unrelated_type.

  • Las siguientes reglas de linter se eliminan porque ya no son necesarias con sound null safety. Debes eliminar su configuración de tus archivos analysis_options.yaml y cualquier comentario de ignore.

    • always_require_non_null_named_parameters
    • avoid_returning_null
    • avoid_returning_null_for_future

3.2.0

#

Lenguaje

#

Bibliotecas

#

dart:cli

#

dart:convert

#

dart:developer

#
  • Obsoleto El método Service.getIsolateID.

dart:ffi

#

dart:io

#

dart:js_interop

#
  • Experimental Eliminado JSNumber.toDart a favor de toDartDouble y toDartInt.
  • Experimental Eliminado Object.toJS a favor de Object.toJSBox.
  • Experimental Se restringieron las API externas de interoperabilidad JS usando dart:js_interop a un conjunto de tipos permitidos.
  • Experimental Se prohibió el uso de isNull e isUndefined en dart2wasm.
  • Experimental Se cambiaron las API typeofEquals e instanceof para que ambas devuelvan bool en lugar de JSBoolean. Además, typeofEquals ahora toma String en lugar de JSString.
  • Experimental Se cambiaron los tipos JSAny y JSObject para que solo sean implementables, no heredables, por los tipos @staticInterop del usuario.
  • Experimental Se cambió JSArray.withLength para que tome int en lugar de JSNumber.

Herramientas

#

Compilador de desarrollo JavaScript (DDC)

#

Compilador de producción JavaScript (dart2js)

#

Analizador

#

3.1.0

#

Bibliotecas

#

dart:async

#

dart:io

#

dart:js_interop

#
  • Experimental Eliminado ObjectLiteral; crea un literal de objeto sin miembros con nombre usando {}.jsify().

package:js

#
  • Los miembros external @staticInterop y los miembros de extensión external ya no se pueden usar como tear-offs. Declara una clausura (closure) o un método que no sea external que llame a estos miembros, y usa eso en su lugar.
  • Los miembros external @staticInterop y los miembros de extensión external generarán un código JS ligeramente diferente para los métodos que tienen parámetros opcionales.

3.0.0

#

Lenguaje

#

Bibliotecas

#
  • Las siguientes clases existentes se han convertido en clases mixin: Iterable, IterableMixin, IterableBase, ListMixin, SetMixin, MapMixin, LinkedListEntry, StringConversionSink.

dart:core

#

dart:async

#

dart:collection

#

dart:developer

#

dart:ffi

#
  • Experimental Obsoleto La anotación @FfiNative ahora está obsoleta. Los usos deben actualizarse para usar la anotación @Native.

dart:html

#

dart:math

#
  • Versionados por lenguaje La interfaz Random solo se puede implementar, no extender.

dart:io

#

2.19.0

#

Lenguaje

#

Bibliotecas

#

dart:convert

#

dart:developer

#

dart:ffi

#

dart:io

#

dart:isolate

#
  • Se revirtió SendPort.send a las comprobaciones estrictas sobre el contenido de los mensajes al enviar mensajes entre isolates que no se sabe si comparten el mismo código.

dart:mirrors

#

package:js

#

dart2js

#

2.18.0

#

Lenguaje

#

Bibliotecas

#

dart:io

#

Herramientas

#

Línea de comandos de Dart

#

2.17.0

#

Bibliotecas

#

dart:io

#

Herramientas

#

Línea de comandos de Dart

#

2.16.0

#

Bibliotecas

#

dart:io

#

dart:isolate

#

Herramientas

#

Línea de comandos de Dart

#

2.15.0

#

Bibliotecas

#

dart:io

#

dart:web_sql

#

dart:html

#

Herramientas

#

Línea de comandos de Dart

#

Dart VM

#

2.14.0

#

Bibliotecas

#

dart:io

#
  • Los callbacks de configuración (setter) .authenticate y .authenticateProxy en HttpClient ahora deben aceptar un argumento realm nulable (para código con null safety migrado previamente).

dart:typed_data

#

Herramientas

#

Dart VM

#

Línea de comandos de Dart

#

dart2js

#

Dart Dev Compiler (DDC)

#

2.13.0

#

Bibliotecas

#

package:js

#
  • Ya no es válido utilizar un String que coincida con una anotación @Native en una anotación @JS() para una clase de interoperabilidad JS no anónima.

2.12.0

#

Lenguaje

#

Bibliotecas

#

dart:ffi

#

Herramientas

#

Dart VM

#

Pub

#

2.10.0

#

Herramientas

#

Dart VM

#

2.9.0

#

Bibliotecas

#

dart:convert

#

dart:html

#
  • CssClassSet.add() y CssClassSet.toggle ahora devuelven false en lugar de null si el CssClassSet corresponde a múltiples elementos.

dart:mirrors

#

Herramientas

#

Dart VM

#

2.8.1

#

Lenguaje

#

Bibliotecas

#

dart:async

#

dart:core

#

dart:ffi

#
  • Se cambiaron Pointer.asFunction() y DynamicLibrary.lookupFunction() a métodos de extensión.

dart:io

#

Herramientas

#

Dart Dev Compiler (DDC)

#

Corregimos varias inconsistencias entre DDC y Dart2JS para que los usuarios encuentren con menos frecuencia código que es aceptado por un compilador pero que luego falla en el otro.

  • Se eliminó la versión heredada (basada en el analyzer) de DDC.
  • Las funciones pasadas a JavaScript utilizando la especificación de interoperabilidad recomendada de package:js ahora deben envolverse con una llamada a allowInterop.
  • Los constructores en clases @JS() deben estar marcados con external.

dart2js

#
  • Los límites (bounds) de los parámetros de tipo correspondientes ahora solo necesitan ser subtipos mutuos en lugar de ser estructuralmente iguales salvo por el renombrado de variables de tipo vinculadas e igualar todos los tipos top.
  • Los tipos ahora están normalizados.
  • Los constructores en clases @JS() deben estar marcados con external.
  • Se eliminó por completo la bandera --package-root, que estaba oculta y deshabilitada en Dart 2.0.0.

2.7.1

#

2.7.0

#

Lenguaje

#

Bibliotecas

#

dart:io

#
  • Se añadió IOOverrides.serverSocketBind para ayudar a escribir pruebas que deseen simular ServerSocket.bind.

2.6.0

#

Lenguaje

#

Bibliotecas

#

dart:ffi

#
  • La API ahora hace uso de miembros de extensión estáticos.
  • Se eliminó la gestión de memoria Pointer.allocate y Pointer.free.
  • Pointer.offsetBy fue eliminado, usa cast y elementAt en su lugar.

2.5.0

#

Bibliotecas

#

dart:io

#

Herramientas

#

Pub

#

2.4.0

#

Lenguaje

#

Bibliotecas

#

dart:isolate

#
  • Isolate.resolvePackageUri siempre lanzará un UnsupportedError cuando se compile con dart2js o DDC.

dart:async

#

2.2.0

#

Bibliotecas

#

package:kernel

#
  • El getter klass en la clase InstanceConstant en la API Kernel AST ha sido renombrado a classNode para mayor consistencia.
  • Se actualizó la implementación de Link para utilizar enlaces simbólicos reales en lugar de uniones (junctions) en Windows.

2.1.1

#

Bibliotecas

#

dart:io

#

Herramientas

#

Dart VM

#

2.1.0

#

Lenguaje

#

Herramientas

#

dart2js

#
  • No se permiten claves duplicadas en un mapa const y producen un error en tiempo de compilación.

2.0.0

#

Lenguaje

#

Bibliotecas

#
  • Se renombraron las constantes en las bibliotecas principales de SCREAMING_CAPS a lowerCamelCase.
  • Se añadieron muchos métodos nuevos a las clases de las bibliotecas principales que deberán implementarse si implementas las interfaces de estas clases.
  • dart:isolate y dart:mirrors ya no son compatibles al usar Dart para la web.

Herramientas

#

Pub

#