重大更改和弃用
- 3.7.0
- 3.6.0
- 3.5.0
- 3.4.0
- 3.3.0
- 3.2.0
- 3.1.0
- 3.0.0
- 2.19.0
- 2.18.0
- 2.17.0
- 2.16.0
- 2.15.0
- 2.14.0
- 2.13.0
- 2.12.0
- 2.10.0
- 2.9.0
- 2.8.1
- 2.7.1
- 2.7.0
- 2.6.0
- 2.5.0
- 2.4.0
- 2.2.0
- 2.1.1
- 2.1.0
- 2.0.0
此页面列出了 Dart SDK 中的所有重大更改和弃用,按版本和区域组织,以帮助 Dart 用户理解和管理其影响。完整的发行说明可在Dart SDK 变更日志中找到。重大更改策略文档描述了 Dart 中关于重大更改和弃用的策略和流程。
此页面包含以下类型的重大更改:
未版本化:Dart SDK 不维护向后兼容性,如果您升级您的 sdk 版本,并且代码依赖于之前的行为,则代码可能会立即中断。
这些是大多数更改,并且在此列表中没有特别标记。
语言版本化:Dart SDK 为现有代码维护向后兼容性,并且行为更改仅在您升级代码的语言版本时生效(可能会破坏依赖于先前行为的代码)。
这些标记为: 语言版本化
弃用:Dart SDK 为弃用的代码维护兼容性,并发出警告。弃用将在后续版本中完全删除,从而破坏任何依赖于先前行为的代码。
这些标记为: 已弃用 / 已移除
实验性:作为版本的一部分发布,但在 SDK 中尚未被视为稳定,并且可能会在一个版本到另一个版本之间中断。实验性更改不一定总是有相应的重大更改问题,但可能在SDK 变更日志中有更多详细信息。
这些标记为: 实验性
如果您对任何这些重大更改有疑问或疑虑,请在相关条目的重大更改问题上发表评论。要接收未来重大更改的通知,请加入 Dart 公告组。
3.7.0
#语言
#- 语言版本化 名为
_
的局部变量和参数 现在是非绑定的,并且不能再被使用或访问。 - 可达性分析现在考虑了使用
is
或as
将字段类型提升为Null
的情况。这使类型系统更加自洽,因为它反映了提升的局部变量的行为。预计此更改在实践中不会产生任何差异。
库
#dart:html
, dart:indexed:db
, dart:svg
, dart:web_audo
, dart:web_gl
, dart:js
#- 已弃用 这些遗留的 Web 库已正式弃用。预计将在未来的版本中删除。项目应迁移到使用
package:web
和dart:js_interop
。要了解更多信息,请查看 迁移到 package:web。
dart:js
, dart:js_util
, package:js
#- 已弃用 这些遗留的 JS 互操作库已正式弃用。预计将在未来的版本中删除。项目应迁移到使用
dart:js_interop
。要了解更多信息,请查看 JS 互操作用法。
工具
#分析器
#- 已移除
package_api_docs
和unsafe_html
lint 规则已被移除,应从analysis_options.yaml
文件中删除。
格式化程序 (dart format
)
#- 语言版本化 格式化程序实现了一种新样式,当格式化语言版本为 3.7 或更高的代码时,会产生新的输出。
- 已移除 不再支持
dart format
的--fix
标志。要应用类似的修复以及更多修复,请配置您的分析选项并运行dart fix
。 - 已弃用
dart format
的--line-length
选项已被弃用并设置为移除。所有用法都应迁移到新的--page-width
选项。
3.6.0
#语言
#- Dart 用于对 throw 表达式的操作数执行类型推断的上下文已从“未知类型”更改为
Object
。这使类型系统更加自洽,因为它反映了抛出null
是不合法的这一事实。预计此更改在实践中不会产生任何差异。
库
#dart:io
#- 已移除
Platform()
构造函数已被移除。应移除Platform
的所有实例化。 HttpClient
现在通过抛出RedirectException
而不是StateError
来响应缺少“Location”标头的重定向。
工具
#分析器
#- 已弃用
package_api_docs
和unsafe_html
lint 规则已被弃用,并设置为在 Dart 3.7 中移除。
编译器前端 (cfe)
#- Dart 编译器现在在类型模式传递到子类型测试过程之前,计算它们的上限和下限闭包。在 Dart 3.6 之前,编译器在上限和下限计算的最开始就计算它们。分析器已经遵循此行为,因此已经通过分析的应用不太可能受到此更改的影响。
Wasm 编译器 (dart2wasm)
#- 当编译为 WebAssembly 时,条件导入中的条件
dart.library.js
现在为false
。应改用dart.library.js_interop
条件。
格式化程序 (dart format
)
#当使用 Dart 3.6 SDK 或更高版本运行 dart format
时,以下更改可能会导致小的格式更改
- 在也使用
this.
或super.
的旧式函数类型形参上保留类型参数。 - 正确格式化同时具有
as
和if
子句的导入。
Pub
#- 如果 git 中跟踪的文件有未提交的更改,
dart pub publish
现在会发出警告。
3.5.0
#语言
#- 编译器用于对
await
表达式的操作数执行类型推断的上下文已更改为与分析器的行为匹配。 - 编译器用于对“if-null”表达式 (
e1 ?? e2
) 的右侧执行类型推断的上下文已更改为与分析器的行为匹配。 旧的行为可以通过提供显式类型来恢复。
库
#dart:core
#DateTime
现在在 Web 平台上存储微秒,更接近于本机平台上的行为。
dart:io
#dart:js_interop
#importModule
现在接受JSAny
而不是String
,以支持其他 JS 值,例如TrustedScriptURL
对象。isTruthy
和not
现在返回JSBoolean
而不是bool
,以便与其他 JS 运算符方法保持一致。ExternalDartReference
不再实现Object
。相反,它现在接受一个类型参数 (T
),其边界为Object?
,以捕获外部化的 Dart 对象的类型。
dart:typed_data
#- 已移除 类型化数据的不可修改视图类已被移除。不要使用这些类的构造函数,而是使用类型化数据列表上的新
asUnmodifiableView
方法。
运行时
#- 已移除 Dart VM 不再支持不健全的空安全。
--no-sound-null-safety
CLI 选项已被移除。Dart_NewListOf
和Dart_IsLegacyType
函数已从 C API 中移除。
- 已移除
Dart_DefaultCanonicalizeUrl
函数已从 C API 中移除。
3.4.0
#语言
#- 用于 cast 模式的模式上下文类型模式现在是
_
(未知类型)而不是Object?
. - Dart 编译器用于对 map 和 set 字面量中的空感知 spread 运算符 (
...?
) 的操作数执行类型推断的类型模式已被设为可为空,以匹配列表字面量中当前发生的情况。
库
#dart:cli
#- 实验性 已移除
waitFor
函数 已被移除。
dart:html
, dart:indexed:db
, dart:svg
, dart:web_audo
, dart:web_gl
#- 已弃用 这些库现在被标记为遗留库,未来将减少支持。新项目应首选使用
package:web
和dart:js_interop
。要了解更多信息,请查看 迁移到 package:web。
dart:js
#- 已弃用 此库现在被标记为遗留库,未来将减少支持。用法应迁移到
dart:js_interop
和dart:js_interop_unsafe
。要了解更多信息,请查看/go/next-gen-js-interop
。
dart:js_util
#- 已弃用 此库现在被标记为遗留库,未来将减少支持。用法应迁移到
dart:js_interop
和dart:js_interop_unsafe
。要了解更多信息,请查看/go/next-gen-js-interop
。
dart:io
#Stdout
有一个新的字段lineTerminator
,允许开发人员控制stdout
和stderr
使用的行尾符。 实现Stdout
的类必须定义lineTerminator
字段。stdout
和stderr
的默认语义没有改变。- 已弃用
FileSystemDeleteEvent.isDirectory
属性。它始终返回false
。
dart:typed_data
#- 已弃用 类型化数据的不可修改视图类已被弃用。不要使用这些类的构造函数,而是使用类型化数据列表上的新
asUnmodifiableView
方法。
工具
#生产 JavaScript 编译器 (dart2js)
#- 实验性 已弃用 您现在应该为
--dump-info
CLI 选项指定binary
或json
格式。json
格式已被弃用,并可能在未来的 Dart 版本中移除。
Wasm 编译器 (dart2wasm)
#- 实验性 各种
dart compile wasm
CLI 参数已更新、移除或替换。要了解更多信息,请运行dart compile wasm --verbose --help
。
运行时
#- 已移除 Dart VM 不再支持外部字符串。因此,
Dart_IsExternalString
、Dart_NewExternalLatin1String
和Dart_NewExternalUTF16String
函数已从 Dart C API 中移除。
3.3.0
#SDK
#实验性 已移除 以下实验现已停用,因为它们已在 Dart 3 中发布,并且对于语言版本 3.0 或更高版本不再必要。应从分析选项、CLI 命令和 IDE 配置中删除它们的配置。
模式
记录
类修饰符
密封类
语言
#库
#dart:cli
#- 实验性 已弃用
waitFor
函数 仍然在另一个版本中被弃用,并设置为在 Dart 3.4 中移除。
dart:ffi
#- 已弃用
Pointer
类型上的elementAt
指针算术方法已被弃用。请迁移到使用-
和+
运算符代替。 - 实验性 已移除 先前已弃用的
@FfiNative
注解已被移除。用法应更新为使用@Native
注解。
dart:html
#- 现在建议使用
package:http
而不是直接使用HttpRequest
。
dart:io
#- 现在建议使用
package:http
而不是直接使用HttpClient
。
dart:js_interop
#- 实验性 JS 类型(如
JSAny
)具有新的编译器特定表示类型。 - 实验性 用户定义的
@staticInterop
类不能再实现JSAny
或JSObject
。用法应迁移到JSObject.fromInteropObject
或定义为扩展类型。 - 实验性
JSArray
和JSPromise
现在具有泛型参数。 - 实验性 各种扩展成员已移动或重命名。要了解有关更新后的扩展,请参考
JSAnyUtilityExtension
和JSAnyOperatorExtension
。
dart:typed_data
#- 类型化数据的不可修改视图类将在 Dart 3.4 中被弃用。不要使用这些类的构造函数,而是使用类型化数据列表上的新
asUnmodifiableView
方法。
dart:nativewrappers
#- 实验性 所有原生包装器类现在都标记为
base
,因此它们的任何子类型都不能被实现。
工具
#生产 JavaScript 编译器 (dart2js)
#- 传递给
noSuchMethod
的Invocation
不再具有最小化的memberName
,即使使用--minify
编译也是如此。
Wasm 编译器 (dart2wasm)
#- 实验性 禁止导入遗留的 JS 互操作库。请优先使用
dart:js_interop
和dart:js_interop_unsafe
代替。
分析器
#实验性 分析器现在会报告无效的
dart doc
注释指令。由于 类型提升方面的改进,以下分析器诊断可能会在以前通过分析的现有代码上触发
unnecessary_non_null_assertion
unnecessary_cast
invalid_null_aware_operator
Linter
#iterable_contains_unrelated_type
和list_remove_unrelated_type
lint 已被移除。请考虑迁移到扩展的collection_methods_unrelated_type
lint。以下 lint 由于在健全的空安全中不再必要而被移除。您应该从
analysis_options.yaml
文件和任何 ignore 注释中删除它们的配置。always_require_non_null_named_parameters
avoid_returning_null
avoid_returning_null_for_future
3.2.0
#语言
#- 语言版本化 更改了可驳斥模式的拆分点 到顶层模式,以便 if-case 语句中的类型提升与审查对象是否可能抛出异常无关。
库
#dart:cli
#- 实验性 已弃用
waitFor
函数。
dart:convert
#dart:developer
#- 已弃用
Service.getIsolateID
方法。
dart:ffi
#- 更改了
NativeCallable.nativeFunction
,以便当接收者已关闭时,调用现在会抛出错误,而不是返回nullptr
。
dart:io
#dart:js_interop
#- 实验性 已移除
JSNumber.toDart
,赞成使用toDartDouble
和toDartInt
。 - 实验性 已移除
Object.toJS
,赞成使用Object.toJSBox.
。 - 实验性 将使用
dart:js_interop
的外部 JS 互操作 API 限制为一组允许的类型。 - 实验性 禁止在 dart2wasm 上使用
isNull
和isUndefined
。 - 实验性 将
typeofEquals
和instanceof
API 都更改为返回 bool 而不是JSBoolean
。此外,typeofEquals
现在接受String
而不是JSString
。 - 实验性 将
JSAny
和JSObject
类型更改为仅可实现,不可由用户@staticInterop
类型扩展。 - 实验性 将
JSArray.withLength
更改为接受int
而不是JSNumber
。
工具
#开发 JavaScript 编译器 (DDC)
#- 为 JavaScript
Symbol
和BigInt
类型添加了拦截器;它们不应再与package:js
类一起使用。
生产 JavaScript 编译器 (dart2js)
#- 为 JavaScript
Symbol
和BigInt
类型添加了拦截器;它们不应再与package:js
类一起使用。
分析器
#语言版本化 私有 final 字段提升 可能会导致以下分析器警告在以前通过分析的现有代码上触发
dartclass C { final num? _x = null; void test() { if (_x != null) { print(_x! * 2); // unnecessary_non_null_assertion print(_x?.abs()); // invalid_null_aware_operator } if (_x is int) { print((_x as int).bitLength); // unnecessary_cast } } }
3.1.0
#库
#dart:async
#- 为纯抽象类添加了
interface
修饰符:MultiStreamController
、StreamConsumer
、StreamIterator
和StreamTransformer
。
dart:io
#- 为
Cookie
类添加了sameSite
,并添加了类SameSite
. FileSystemEvent
是sealed
。这意味着FileSystemEvent
不能被扩展或实现。
dart:js_interop
#- 实验性 已移除
ObjectLiteral
;使用{}.jsify()
创建没有命名成员的对象字面量。
package:js
#external
@staticInterop
成员和external
扩展成员不能再用作 tear-offs。声明一个闭包或一个调用这些成员的非external
方法,并使用它代替。external
@staticInterop
成员和external
扩展成员将为具有可选参数的方法生成略有不同的 JS 代码。
3.0.0
#语言
#语言版本化 更改了 switch case 的解释,从常量表达式更改为模式。
语言版本化 从已升级到 Dart 3.0 的库中声明的类默认情况下不能再用作混入。
如果
continue
语句的目标 label 不是循环 (for
、do
和while
语句) 或switch
成员,则 Dart 会报告编译时错误。
库
#- 以下现有类已被制作为混入类:
Iterable
、IterableMixin
、IterableBase
、ListMixin
、SetMixin
、MapMixin
、LinkedListEntry
、StringConversionSink
。
dart:core
#- 已弃用 已弃用的 API。
dart:async
#- 已移除 移除了已弃用的
DeferredLibrary
类。
dart:collection
#- 语言版本化 平台库的更改。
dart:developer
#- 已移除 移除了已弃用的
MAX_USER_TAGS
常量。请改用maxUserTags
。 - 已移除 移除了已弃用的
Metrics
、Metric
、Counter
和Gauge
类,因为它们自 Dart 2.0 以来已损坏。
dart:ffi
#- 实验性 已弃用
@FfiNative
注解现已弃用。用法应更新为使用@Native
注解。
dart:html
#dart:math
#- 语言版本化
Random
接口只能被实现,不能被扩展。
dart:io
#- 更新了
NetworkProfiling
以适应 vm_service:11.0.0 中引入的新String
id
2.19.0
#语言
#库
#dart:convert
#- 已移除
JsonUtf8Encoder
中先前已弃用的 API [DEFAULT_BUFFER_SIZE
] 已被移除。
dart:developer
#- 已移除 移除了先前已弃用的 API
kInvalidParams
、kExtensionError
、kExtensionErrorMax
和kExtensionErrorMin
在ServiceExtensionResponse
中。
dart:ffi
#- 更改了
Pointer
的运行时类型参数为Never
,为完全移除运行时类型参数做准备。更改了Pointer.toString
以不报告任何类型参数。
dart:io
#- 不允许使用负数或十六进制 content-length 标头.
File.create
现在接受新的可选exclusive
bool
参数,当该参数为true
时,如果目标文件已存在,操作将失败。- 多次调用
ResourceHandle.toFile()
、ResourceHandle.toSocket()
、ResourceHandle.toRawSocket()
或ResourceHandle.toRawDatagramSocket()
现在会抛出StateError
。
dart:isolate
#- 恢复了
SendPort.send
,使其在已知不共享相同代码的隔离体之间发送消息时,重新进行严格的消息内容检查。
dart:mirrors
#- 已移除 已移除 API
MirrorsUsed
和Comment
。
package:js
#- 预览功能
@staticInterop
的重大变更- 禁止使用此注解的类使用
external
生成构造函数。 详情请参阅 48730 和 49941。 - 禁止使用此注解的类的外部扩展成员使用类型参数.
- 使用此注解的类也应该具有
@JS
注解。 - 使用此注解的类不能被未使用此注解的类实现。
- 禁止使用此注解的类使用
dart2js
#2.18.0
#语言
#库
#dart:io
#- 将
dart:io
中RedirectException
的uri
属性更改为可为空. - 移除了
dart:io
网络 API 中遵循SCREAMING_CAPS
约定的常量. - Dart VM 不再在退出时自动恢复初始终端设置。
工具
#Dart 命令行
#2.17.0
#库
#dart:io
#- 为
HttpClient
添加了新的connectionFactory
属性. - 为
HttpClient
添加了新的keyLog
属性,允许记录 TLS 密钥以进行调试。 - 移除了
dart:io
中遵循SCREAMING_CAPS
的常量 - 为
SecurityContext
添加了一个新的allowLegacyUnsafeRenegotiation
属性,允许客户端安全套接字的 TLS 重新协商。
工具
#Dart 命令行
#- 已弃用 已弃用独立的
dart2js
工具。 - 已弃用 已弃用独立的
dartdevc
工具。 - 已移除 已移除独立的
dartdoc
工具。
2.16.0
#库
#dart:io
#- 在 Windows 上,如果
Directory.rename
的newPath
指定了一个目录,将不再删除该目录。相反,将会抛出FileSystemException
。 - 已移除 已移除
Platform.packageRoot
API。
dart:isolate
#工具
#Dart 命令行
#- 已弃用 已弃用独立的
dartanalyzer
工具。 - 已弃用 已弃用独立的
dartdoc
工具。 - 已移除 已移除已弃用的独立
pub
工具。
2.15.0
#库
#dart:io
#- 更新了
SecurityContext
类,将最小 TLS 协议版本设置为 TLS1_2_VERSION (1.2) 而不是 TLS1_VERSION。
dart:web_sql
#dart:html
#- 移除了
window.openDatabase
(与上面dart:web_sql
的删除相关)。
工具
#Dart 命令行
#- 移除了独立的
dart2native
工具. - 移除了独立的
dartfmt
工具。
Dart VM
#- 移除了对
dart-ext:
样式原生扩展的支持 - 通过
Isolate.spawn()
API 生成的隔离体被分组,在同一托管堆上运行,因此共享各种 VM 内部数据结构。
2.14.0
#库
#dart:io
#HttpClient
中的 setter 回调.authenticate
和.authenticateProxy
现在必须接受可空的realm
参数(对于预迁移的空安全代码)。
dart:typed_data
#- 此库公开的大多数类型 不再可以被扩展、实现或混入。
工具
#Dart VM
#- Expandos,以及
Dart_NewWeakPersistentHandle
和Dart_NewFinalizableHandle
的object
参数,不再接受Pointer
和Struct
的子类型
Dart 命令行
#- 弃用了独立的
dart2native
工具 - 弃用了独立的
dartfmt
工具。
dart2js
#dart2js
不再支持旧版浏览器,因为它默认发出 ES6+ JavaScript。
Dart Dev Compiler (DDC)
#- 更改了
package:js
类的子类型关系,使其更正确并与 Dart2JS 一致。
2.13.0
#库
#package:js
#- 不再有效 在非匿名 JS 互操作类的
@JS()
注解中使用与@Native
注解匹配的String
。
2.12.0
#语言
#库
#dart:ffi
#- 弃用了使用泛型
T
调用sizeOf<T>
、Pointer<T>.elementAt()
、Pointer<T extends Struct>.ref
和Pointer<T extends Struct>[]
- 弃用了
package:ffi
中的allocate
,因为它将不再能够泛型地调用sizeOf<T>
。 - 弃用了没有任何原生成员的
Struct
的子类型.
工具
#Dart VM
#Dart_WeakPersistentHandle
不再在其引用的对象被垃圾回收时自动删除自身,以避免竞争条件。- 将
Dart_WeakPersistentHandleFinalizer
重命名为Dart_HandleFinalizer
,并移除了其handle
参数。
Pub
#2.10.0
#工具
#Dart VM
#- 将
dart_api_dl.cc
重命名为dart_api_dl.c
,并更改为纯 C 文件。
2.9.0
#库
#dart:convert
#- 当编码包含不成对代理项的字符串为 UTF-8 时,不成对的代理项将被编码为替换字符 (
U+FFFD
)。 - 当解码 UTF-8 时,编码的代理项将被视为格式错误的输入。
- 更改了为格式错误的输入序列发出的替换字符的数量,以匹配 WHATWG 编码标准,当使用
allowMalformed: true
解码 UTF-8 时。
dart:html
#- 如果
CssClassSet
对应于多个元素,则CssClassSet.add()
和CssClassSet.toggle
现在返回false
而不是null
。
dart:mirrors
#- Web 编译器(dart2js 和 DDC)现在会生成编译时错误,如果导入了
dart:mirrors
。
工具
#Dart VM
#- 当使用
print
函数打印字符串时,默认实现会将字符串中任何不成对的代理项打印为替换字符 (U+FFFD
)。 - Dart API 中的
Dart_StringToUTF8
函数 会将不成对的代理项转换为替换字符。
2.8.1
#语言
#- 修复了一个实现错误,其中局部变量推断会错误地使用类型变量的提升类型。
- 修复了一个实现错误,围绕
implements Function
、extends Function
或with Function
子句自 Dart 2.0.0 以来不再生效。
库
#dart:async
#- 将
StreamSubscription.cancel()
的返回类型更改为Future<void>
. - 将
runZoned()
函数拆分为两个函数:runZoned()
和runZonedGuarded()
,其中后者具有必需的onError
参数,而前者没有。 - 传递给
Completer.completeError()
、Stream.addError()
、Future.error()
等的错误 不能再为null
。 - 使堆栈跟踪变为非空.
dart:core
#RuneIterator
上的三个成员 在首次调用moveNext()
之前访问时不再返回null
。String.fromEnvironment()
的defaultValue
的默认值 现在是空字符串而不是null
。int.fromEnvironment()
的defaultValue
参数的默认值 现在为零。
dart:ffi
#- 将
Pointer.asFunction()
和DynamicLibrary.lookupFunction()
更改为扩展方法。
dart:io
#- 更改了
HttpHeaders
方法add()
和set
的签名。 Socket
类现在会抛出SocketException
,如果套接字已被显式销毁或在设置或获取套接字选项时升级为安全套接字。Process
类现在会抛出StateError
,如果在访问exitCode
getter 时进程已分离(ProcessStartMode.detached
和ProcessStartMode.detachedWithStdio
)。Process
类现在也会抛出错误,当未连接到子进程的 stdio(ProcessStartMode.detached
和ProcessStartMode.inheritStdio
)时,访问stdin
、stdout
和stderr
getter。- 如果
FileStat.stat()
或FileStat.statSync()
失败返回的虚拟对象 现在包含 Unix 纪元时间戳,而不是null
用于accessed
、changed
和modified
getter。 HeaderValue
类现在在两种无效的极端情况下解析更严格。
工具
#Dart Dev Compiler (DDC)
#我们修复了 DDC 和 Dart2JS 之间的一些不一致之处,以便用户更少地遇到一个编译器接受的代码,但在另一个编译器中失败的情况。
- 删除了旧版(基于分析器)的 DDC。
- 使用推荐的
package:js
互操作规范传递给 JavaScript 的函数现在必须使用对allowInterop
的调用进行包装。 @JS()
类中的构造函数必须标记为external
。
dart2js
#- 相应的类型参数边界现在只需要是互为子类型,而不是在绑定类型变量的重命名和等同所有顶层类型的情况下结构相等。
- 类型现在已规范化。
@JS()
类中的构造函数必须标记为external
。- 完全移除了
--package-root
标志,该标志在 Dart 2.0.0 中已隐藏和禁用。
2.7.1
#2.7.0
#语言
#库
#dart:io
#- 添加了
IOOverrides.serverSocketBind
以帮助编写希望模拟ServerSocket.bind
的测试。
2.6.0
#语言
#- 更改了在
FutureOr
上下文中使用Null
值时的推断。 也就是说,类似于Null
<:FutureOr<T>
形式的约束现在产生Null
作为T
的解决方案。
库
#dart:ffi
#- API 现在使用静态扩展成员。
- 移除了内存管理
Pointer.allocate
和Pointer.free
。 Pointer.offsetBy
已移除,请改用cast
和elementAt
。
2.5.0
#库
#- 各种核心库中的各种方法和属性,过去声明的返回类型为
List<int>
,已更新为声明返回类型为Uint8List
。
dart:io
#Cookie
类的构造函数的name
和value
可选位置参数 现在是必需的。Cookie
类的name
和value
setter 现在验证 字符串是否由允许的字符集构成且不为空。
工具
#Pub
#- 发布到 pub.dev 的软件包 不再包含 git 依赖项。
2.4.0
#语言
#库
#dart:isolate
#- 当使用 dart2js 或 DDC 编译时,
Isolate.resolvePackageUri
将始终抛出UnsupportedError
。
dart:async
#- 修复了
StreamIterator
类中的一个错误,其中await for
允许null
作为流。
2.2.0
#库
#package:kernel
#- Kernel AST API 中
InstanceConstant
类上的klass
getter 已重命名为classNode
以保持一致性。 - 更新了
Link
实现,以在 Windows 上使用真正的符号链接而不是连接点。
2.1.1
#库
#dart:io
#工具
#Dart VM
#- 修复了在使用
dart:mirrors
时的一个健全性漏洞,该漏洞以不正确的方式反射性地调用方法,从而违反了其静态类型。
2.1.0
#语言
#- 许多应该检测和报告的静态错误在 2.0.0 中不受支持。 这些错误现在已报告,这意味着现有的不正确代码可能会显示新的错误
工具
#dart2js
#- const map 中的重复键是不允许的,并会产生编译时错误。
2.0.0
#语言
#- 用使用类型推断和运行时检查的健全静态类型系统替换了不健全的可选静态类型系统,以前称为强模式。
- 标记为
async
的函数现在同步运行,直到第一个await
语句。
库
#- 将核心库中的常量从
SCREAMING_CAPS
重命名为lowerCamelCase
。 - 向核心库类添加了许多新方法,如果您实现这些类的接口,则需要实现这些方法。
- 当使用 Dart for Web 时,不再支持
dart:isolate
和dart:mirrors
。
工具
#Pub
#- 用新的构建系统替换了 pub 基于转换器的构建系统。
除非另有说明,否则本网站上的文档反映的是 Dart 3.7.1。页面上次更新于 2025-02-12。 查看源代码 或 报告问题。