破壊的変更と非推奨
- 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のすべての言語およびライブラリの破壊的変更と非推奨を、リリースと領域ごとに整理してリストし、Dartユーザーがその影響を理解し、管理するのに役立てています。完全なリリースノートは、Dart SDKの変更履歴にあります。破壊的変更ポリシーのドキュメントでは、Dartにおける破壊的変更と非推奨に関するポリシーとプロセスを説明しています。
このページには、次の種類の破壊的変更が含まれています。:
バージョン管理なし:Dart SDKは下位互換性を維持せず、以前の動作に依存しているコードは、SDKバージョンをアップグレードするとすぐに破損する可能性があります。
これらは変更の大部分であり、このリストでは特にマークされていません。
言語バージョン管理:Dart SDKは既存のコードの下位互換性を維持し、動作の変更は、コードの言語バージョンをアップグレードしたときにのみ有効になります(以前の動作に依存するコードが破損する可能性があります)。
これらは次のようにマークされています: 言語バージョン管理
非推奨:Dart SDKは、非推奨のコードとの互換性を警告付きで維持します。非推奨は、後続のリリースで完全に削除され、以前の動作に依存するコードが破損します。
これらは次のようにマークされています: 非推奨 / 削除済
実験的:リリースの一部ですが、まだSDKで安定しているとはみなされておらず、バージョン間で破損する可能性があります。実験的な変更には、対応する破壊的変更の問題が常に存在するとは限りませんが、SDKの変更履歴で詳細を確認できます。
これらは次のようにマークされています:実験的
これらの破壊的変更について質問や懸念がある場合は、関連するエントリからリンクされている破壊的変更の問題にコメントしてください。将来の破壊的変更に関する通知を受け取るには、Dart announceグループに参加してください。
3.6.0
#暫定的
次の変更は3.6の安定版リリースに含まれる予定ですが、最終リストはそれまでに変更される可能性があります。これらの変更による潜在的な影響を軽減するために、3.6リリースより前に考慮することを検討してください。
言語
#- throw式のオペランドで型推論を実行するためにDartが使用するコンテキストが、「不明な型」から
Object
に変更されました。これにより、null
をスローすることが合法ではないという事実を反映しているため、型システムはより自己整合性が高くなります。この変更は、実際には影響がないと予想されます。
3.5.0
#言語
#await
式のオペランドで型推論を実行するためにコンパイラーが使用するコンテキストが、アナライザーの動作と一致するように変更されました。- 「if-null」式(
e1 ?? e2
)の右側で型推論を実行するためにコンパイラーが使用するコンテキストが、アナライザーの動作と一致するように変更されました。古い動作は、明示的な型を指定することで復元できます。
ライブラリ
#dart:core
#dart:io
#dart:js_interop
#importModule
が、String
の代わりにJSAny
を受け入れるようになりました。これにより、TrustedScriptURL
オブジェクトなど、他のJS値もサポートされます。isTruthy
とnot
が、他のJS演算子メソッドと一貫性を持たせるために、bool
の代わりにJSBoolean
を返すようになりました。ExternalDartReference
がObject
を実装しなくなりました。代わりに、外部化されるDartオブジェクトの型をキャプチャするために、Object?
の境界を持つ型パラメーター(T
)を受け入れるようになりました。
dart:typed_data
#- 削除済 型付きデータの変更不可ビュークラスが削除されました。これらのクラスのコンストラクターを使用する代わりに、型付きデータリストの新しい
asUnmodifiableView
メソッドを使用してください。
ランタイム
#- 削除済 Dart VMは、健全でないNull安全性をサポートしなくなりました。
--no-sound-null-safety
CLIオプションが削除されました。Dart_NewListOf
関数とDart_IsLegacyType
関数がC APIから削除されました。
- 削除済
Dart_DefaultCanonicalizeUrl
関数がC APIから削除されました。
3.4.0
#言語
#- キャストパターンのパターンコンテキスト型スキーマが、
Object?
の代わりに_
(不明な型)になりました。. - マップおよびセットリテラルでnull対応のスプレッド演算子(
...?
)のオペランドで型推論を実行するためにDartコンパイラーが使用する型スキーマが、リストリテラルで現在発生していることと一致するようにnullableになりました。
ライブラリ
#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 設定から削除する必要があります。
patterns
records
class-modifers
sealed-class
言語
#ライブラリ
#dart:cli
#- 試験的 非推奨
waitFor
関数 は、別のリリースでは非推奨のままとなり、Dart 3.4 で削除される予定です。
dart:ffi
#- 非推奨
Pointer
型のelementAt
ポインタ演算メソッドは非推奨となりました。代わりに-
および+
演算子に移行してください。 - 試験的 削除 以前に非推奨となった
@FfiNative
アノテーションは削除されました。使用箇所は@Native
アノテーションを使用するように更新する必要があります。
dart:html
#HttpRequest
を直接使用する代わりに、package:http
を使用することが推奨されるようになりました。
dart:io
#HttpClient
を直接使用する代わりに、package:http
を使用することが推奨されるようになりました。
dart:js_interop
#- 試験的
JSAny
のような JS 型には、新しいコンパイラ固有の表現型があります。 - 試験的 ユーザー定義の
@staticInterop
クラスは、JSAny
またはJSObject
を実装できなくなりました。使用箇所はJSObject.fromInteropObject
に移行するか、拡張型として定義する必要があります。 - 試験的
JSArray
とJSPromise
にジェネリックパラメータが追加されました。 - 試験的 さまざまな拡張メンバーが移動または名前変更されました。更新された拡張機能については、
JSAnyUtilityExtension
およびJSAnyOperatorExtension
を参照してください。
dart:typed_data
#- 型付きデータの変更不可ビュークラスは、Dart 3.4 で非推奨になる予定です。これらのクラスのコンストラクタを使用する代わりに、型付きデータリストの新しい
asUnmodifiableView
メソッドを使用してください。
dart:nativewrappers
#- 試験的 すべてのネイティブラッパークラスが
base
とマークされるようになりました。これにより、これらのサブタイプはいずれも実装できなくなります。
ツール
#プロダクション JavaScript コンパイラ (dart2js)
#Wasm コンパイラ (dart2wasm)
#- 試験的 レガシー JS interop ライブラリのインポートを禁止します。代わりに
dart:js_interop
とdart:js_interop_unsafe
を使用することを推奨します。
アナライザー
#試験的 無効な
dart doc
コメントディレクティブが、アナライザーによって報告されるようになりました。型昇格の改善により、以前は分析に合格していた既存のコードで、次のアナライザー診断がトリガーされる可能性があります
unnecessary_non_null_assertion
unnecessary_cast
invalid_null_aware_operator
リンター
#iterable_contains_unrelated_type
およびlist_remove_unrelated_type
リンターは削除されました。拡張されたcollection_methods_unrelated_type
リンターへの移行を検討してください。以下のリンターは、null セーフティが健全であるため不要になったため、削除されます。
analysis_options.yaml
ファイルと、無視コメントから、これらの設定を削除する必要があります。always_require_non_null_named_parameters
avoid_returning_null
avoid_returning_null_for_future
3.2.0
#言語
#- 言語バージョン管理 refutable パターンの分割点をトップレベルパターンに変更し、if-case ステートメントでの型昇格は、検査対象が例外をスローする可能性があるかどうかに関係なく、一貫するようにしました。
ライブラリ
#dart:cli
#- 試験的 非推奨
waitFor
関数。
dart:convert
#utf8.encode()
およびUtf8Codec.encode()
の戻り値の型をList<int>
からUint8List
に変更しました。
dart:developer
#- 非推奨
Service.getIsolateID
メソッド。
dart:ffi
#dart:io
#- HTTP ヘッダーから末尾の空白を削除しました.
HttpClientResponse.headers
およびHttpRequest.headers
が返す折り畳まれたヘッダー値の折り返し位置にスペースを挿入しました。
dart:js_interop
#- 試験的 削除
JSNumber.toDart
をtoDartDouble
およびtoDartInt
に置き換えました。 - 試験的 削除
Object.toJS
をObject.toJSBox
に置き換えました。 - 試験的
dart:js_interop
を使用した外部 JS interop API を、許可された型セットに制限しました。 - 試験的 dart2wasm での
isNull
およびisUndefined
の使用を禁止しました。 - 試験的
typeofEquals
およびinstanceof
API を両方ともJSBoolean
の代わりに bool を返すように変更しました。また、typeofEquals
はJSString
の代わりにString
を受け取るようになりました。 - 試験的
JSAny
およびJSObject
型を、ユーザーの@staticInterop
型によって拡張可能ではなく、実装のみ可能に変更しました。 - 試験的
JSArray.withLength
がJSNumber
の代わりにint
を受け取るように変更しました。
ツール
#開発用 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
拡張メンバーは、ティアオフとして使用できなくなりました。代わりに、これらのメンバーを呼び出すクロージャまたは非external
メソッドを宣言し、それを使用してください。external
@staticInterop
メンバーとexternal
拡張メンバーは、オプションのパラメータを持つメソッドに対して、わずかに異なる JS コードを生成します。
3.0.0
#言語
#言語バージョン管理 switch ケースの解釈を定数式からパターンに変更しました。
言語バージョン管理 Dart 3.0 にアップグレードされたライブラリのクラス宣言は、デフォルトではミックスインとして使用できなくなりました。
continue
ステートメントが、ループ (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
#2.19.0
#言語
#Null
型とNever
型により、到達不能なコードとして追加のコードにフラグを立てました。- アクセスできないプライベート名を
noSuchMethod
に委譲しない. - トップレベルの型推論中に発生するすべての循環依存関係に対してコンパイル時エラーを報告します。
ライブラリ
#dart:convert
#- 削除 以前に非推奨となっていた
JsonUtf8Encoder
の API [DEFAULT_BUFFER_SIZE
] を削除しました。
dart:developer
#- 削除 以前に非推奨となっていた API
kInvalidParams
、kExtensionError
、kExtensionErrorMax
、およびkExtensionErrorMin
をServiceExtensionResponse
から削除しました。
dart:ffi
#Pointer
のランタイム型引数をNever
に変更しました。これは、ランタイム型引数を完全に削除する準備のためです。Pointer.toString
を型引数を報告しないように変更しました。
dart:io
#- 負または16進数の 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
プロパティを nullable に変更しました.SCREAMING_CAPS
規則に従い、dart:io
のネットワーク API 内の定数を削除しました.- Dart VM は、終了時に初期ターミナル設定を自動的に復元しなくなりました。
ツール
#Dart コマンドライン
#2.17.0
#ライブラリ
#dart:io
#HttpClient
に新しいconnectionFactory
プロパティを追加しました.HttpClient
に新しいkeyLog
プロパティを追加しました。これにより、デバッグ目的で TLS キーをログに記録できます。SCREAMING_CAPS
に従い、dart:io
内の定数を削除しました- クライアントセキュアソケットの TLS 再ネゴシエーションを許可する、新しい
allowLegacyUnsafeRenegotiation
プロパティをSecurityContext
に追加しました。
ツール
#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_VERSION (1.0) ではなく TLS1_2_VERSION (1.2) に設定しました。
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
のセッターコールバック.authenticate
および.authenticateProxy
は、(移行済みの Null 安全コードで) Nullable のrealm
引数を受け入れる必要があります。
dart:typed_data
#- このライブラリによって公開されるほとんどの型は、拡張、実装、または mix-in できなくなりました。
ツール
#Dart VM
#Dart_NewWeakPersistentHandle
およびDart_NewFinalizableHandle
の Expandos およびobject
パラメーターは、Pointer
およびStruct
のサブタイプを受け入れなくなりました
Dart コマンドライン
#- スタンドアロンの
dart2native
ツールを非推奨にしました - スタンドアロンの
dartfmt
ツールを非推奨にしました。
dart2js
#Dart Dev Compiler (DDC)
#package:js
クラスのサブタイピング関係を変更し、Dart2JS とより正確で一貫性のあるものにしました。
2.13.0
#ライブラリ
#package:js
#2.12.0
#言語
#- Null セーフティが、オプトアウトしていないすべてのコードでデフォルトで有効になりました。
- 拡張機能で
this
が型の昇格を受けることがあった実装バグを修正しました。
ライブラリ
#dart:ffi
#sizeOf<T>
、Pointer<T>.elementAt()
、Pointer<T extends Struct>.ref
、およびPointer<T extends Struct>[]
のジェネリックT
を使用した呼び出しを非推奨にしました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 をデコードする場合、エンコードされたサロゲートは不正な入力として扱われます。
- 不正な入力シーケンスに対して出力される置換文字の数を変更し、
allowMalformed: true
を指定して UTF-8 をデコードするときに WHATWG エンコーディング標準と一致するようにしました。
dart:html
#CssClassSet.add()
およびCssClassSet.toggle
は、CssClassSet
が複数の要素に対応する場合、null
ではなくfalse
を返すようになりました。
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()
関数を 2 つの関数に分割しました:runZoned()
とrunZonedGuarded()
です。後者には必須のonError
パラメーターがあり、前者にはありません。Completer.completeError()
、Stream.addError()
、Future.error()
などに渡されるエラーは、null
にすることはできなくなりました。- スタックトレースを非 Null にしました.
dart:core
#RuneIterator
の 3 つのメンバーは、moveNext()
の最初の呼び出しの前にアクセスした場合、null
を返さなくなりました。String.fromEnvironment()
のdefaultValue
のデフォルト値は、null
ではなく空の文字列になりました。int.fromEnvironment()
のdefaultValue
パラメーターのデフォルト値は、0 になりました。
dart:ffi
#Pointer.asFunction()
およびDynamicLibrary.lookupFunction()
を拡張メソッドに変更しました。
dart:io
#HttpHeaders
メソッドadd()
およびset
のシグネチャを変更しました。Socket
クラスは、ソケットオプションの設定または取得時に、ソケットが明示的に破棄された場合、またはセキュアソケットにアップグレードされた場合、SocketException
をスローするようになりました。Process
クラスは、プロセスがデタッチされている場合 (ProcessStartMode.detached
およびProcessStartMode.detachedWithStdio
)、exitCode
ゲッターにアクセスすると、StateError
をスローするようになりました。Process
クラスは、子プロセスの stdio (ProcessStartMode.detached
およびProcessStartMode.inheritStdio
) に接続されていない場合、stdin
、stdout
、およびstderr
ゲッターにアクセスすると、StateError
をスローするようになりました。FileStat.stat()
またはFileStat.statSync()
が失敗した場合に返されるダミーオブジェクトは、現在、accessed
,changed
,modified
ゲッターに対してnull
の代わりに Unix エポックタイムスタンプを含むようになりました。HeaderValue
クラスは、2つの無効なエッジケースで、より厳密に解析するようになりました。
ツール
#Dart Dev Compiler (DDC)
#DDCとDart2JS間のいくつかの不整合を修正し、ユーザーが一方のコンパイラーでは受け入れられるが、他方では失敗するコードに遭遇する頻度を減らしました。
- DDC のレガシー(アナライザーベース)バージョンを削除しました。
- 推奨される
package:js
相互運用仕様を使用して JavaScript に渡される関数は、allowInterop
の呼び出しでラップする必要があります。 @JS()
クラスのコンストラクターはexternal
でマークする必要があります。
dart2js
#- 対応する型パラメーターの境界は、境界型変数の名前の変更およびすべてのトップタイプの等価化を考慮して構造的に等しい必要はなく、相互の部分型であるだけでよくなりました。
- 型は正規化されるようになりました。
@JS()
クラスのコンストラクターはexternal
でマークする必要があります。- Dart 2.0.0で非表示および無効化されていた
--package-root
フラグを完全に削除しました。
2.7.1
#2.7.0
#言語
#ライブラリ
#dart:io
#ServerSocket.bind
をモックしたいテストの作成を支援するために、IOOverrides.serverSocketBind
を追加しました。
2.6.0
#言語
#FutureOr
コンテキストでNull
値を使用する場合の推論を変更しました。具体的には、Null
<:FutureOr<T>
のような形式の制約は、T
の解決策としてNull
を生成するようになりました。
ライブラリ
#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
セッターは、文字列が許可された文字セットで作成されており、nullでないことを検証するようになりました。
ツール
#Pub
#- pub.dev に公開されたパッケージは、git 依存関係を含めることができなくなりました。
2.4.0
#言語
#ライブラリ
#dart:isolate
#Isolate.resolvePackageUri
は、dart2js または DDC でコンパイルされた場合、常にUnsupportedError
をスローします。
dart:async
#StreamIterator
クラスのバグを修正しました。このバグでは、await for
がストリームとしてnull
を許可していました。
2.2.0
#ライブラリ
#package:kernel
#- Kernel AST API の
InstanceConstant
クラスのklass
ゲッターは、一貫性のためにclassNode
に名前が変更されました。 Link
の実装を更新し、Windows でジャンクションの代わりに実際のシンボリックリンクを利用するようにしました。
2.1.1
#ライブラリ
#dart:io
#ツール
#Dart VM
#2.1.0
#言語
#- 検出して報告すべきだった多くの静的エラーが 2.0.0 でサポートされていませんでした。これらは現在報告されるため、既存の誤ったコードで新しいエラーが表示される可能性があります。
- mixin は、スーパークラスを正しくオーバーライドする必要があります。.
- extends 句の暗黙的な型引数は、クラスの境界を満たす必要があります。.
- インスタンスメンバーはプレフィックスをシャドウする必要があります。.
- コンストラクター呼び出しは、オプションの
new
を使用する場合でも、有効な構文を使用する必要があります。. - ジェネリック typedef への型引数は、その境界を満たす必要があります。.
- クラスは FutureOr を実装できません。.
- 抽象メソッドは、具体的なメソッドを不健全にオーバーライドすることはできません。.
- 定数コンストラクターは、非定数コンストラクターにリダイレクトできません。.
- 囲んでいるクラスと同じ名前のセッターは許可されません。.
ツール
#dart2js
#- 定数マップ内の重複キーは許可されておらず、コンパイル時エラーが発生します。
2.0.0
#言語
#- 以前は強モードと呼ばれていた、健全でないオプションの静的型システムを、型推論とランタイムチェックを使用した健全な静的型システムに置き換えました。
async
とマークされた関数は、最初のawait
ステートメントまで同期的に実行されるようになりました。
ライブラリ
#- コアライブラリの定数の名前を
SCREAMING_CAPS
からlowerCamelCase
に変更しました。 - コアライブラリクラスに多くの新しいメソッドを追加しました。これらのクラスのインターフェースを実装する場合は、実装する必要があります。
dart:isolate
およびdart:mirrors
は、Web 用の Dart を使用する場合、サポートされなくなりました。
ツール
#Pub
#- pub のトランスフォーマーベースのビルドシステムを、新しいビルドシステムに置き換えました。
特に明記されていない限り、このサイトのドキュメントは Dart 3.5.3 を反映しています。ページは最終更新 2024-08-06。 ソースを表示 または 問題を報告してください。