Google は、Flutter でアプリを構築するために使用される言語の新しいバージョンである Dart 2.12 をリリースしました。 このリリースは Flutter 2.0 とともに提供されます。
とともに Flutter 2.0のリリース, Google は Dart 2.12 も安定版にします。 ご存知ない方のために付け加えておきますが、Dart は Flutter が使用する言語です。 これは TypeScript ベースの言語ですが、これから説明するものを含め、いくつかの言語機能が追加されています。
ヌルセーフティ
Null セーフティは非常に優れた言語機能です。 これにより、変数が null になるかどうかを考慮し、null になる可能性のある状況に明示的に対処する必要があり、同時に特定の変数が null にならないことも保証できます。
Dart 2.12 では、Swift や Kotlin に似た構文による null セーフティが完全にサポートされるようになりました。 スマート キャストもあります。Dart は、通常は null 値が許容される変数が null にならないことを確実に知っている場合、それを暗黙的に null 値を許容しない形式にキャストします。
null 安全性は (非常に) 重大な変更であるため、この機能はオプトインです。 Dart 2.12 に更新すると、コンパイルは壊れず、すべてに null 可能性のヒントを追加するために何時間も費やす必要がなくなります。 プロジェクトがまだ null セーフでない場合でも、null セーフな依存関係を使用することもできます。
移行を決定したら、組み込みの移行ツール (ダーツマイグレーション) および/または 移行ガイド すべてをセットアップするために。
また、Null-safety は Dart 2.12 に含まれていますが、新しい Flutter プロジェクトを作成する場合、null-safety はそのままでは有効になりません。 手動で有効にする必要があります。 新しい Dart プロジェクトでは、null セーフティが有効になります。
外部関数インターフェース
Dart (および Flutter) は完全なクロスプラットフォーム互換性に焦点を当てていますが、ネイティブで実行する必要があることがまだいくつかあります。 ネイティブ操作を容易にするために、Dart には外部関数インターフェイス (FFI) が用意されています。 FFI を使用すると、奇妙な文字列ベースの API 呼び出しやその他の不格好な相互運用性メソッドに頼ることなく、Dart から C コードを操作できるようになります。
そして、Dart 2.12 では、FFI が安定しました。これは、実稼働プロジェクトで使用する準備ができており、機能がほぼ完成していることを意味します。
それを念頭に置いて、FFI にはいくつかの重大な変更を含むいくつかの変更があります。
このリリースで最も焦点を当てたのは、構造体を Dart および C でどのように使用できるかということでした。 1 つは、以前は参照だけがサポートされていたのに、C コードで構造体を参照と値で渡すことができるようになりました。 もう 1 つの重要な機能は、このリリース以前には存在しなかった、ネストされた構造体のサポートです。
次に重大な変更について説明します。 FFI を使用していた場合は、2.12 で動作するようにコードを更新する必要がある場合があります。 このバージョンの FFI では、空の構造体を作成できなくなりました。 何らかの理由で必要な場合は、新しい「不透明」タイプを使用できます。 一部の FFI 組み込み関数の動作にもいくつかの変更が加えられています。 ここについて読んでください.
最後に、既存の C ヘッダー ファイルから FFI ラッパーを生成できる FFI 用の新しいパッケージがあります。 フィゲン. 多数の API メソッドを使用する必要がある C コードが多数ある場合、これは非常に役立ちます。 所有する C コードの量が少ない場合でも、これは便利な機能です。
Dart 2.12 についてはこれでほぼ終わりです。 null 安全性と安定した C 相互運用性ライブラリの追加により、Dart は非常に機能豊富な言語になりつつあります。 コメント欄で Dart 2.12 についてのご意見をお聞かせください。