<

Flutter 1.2.1 リリースノート

Flutter v1.0 リリース以来、私たちの最優先事項は 両方から報告された優先度の高い問題に引き続き対処します。 Flutter 開発者と Flutter チーム自体。 これには、Flutter での 672 件のプル リクエストのコミットが含まれます。 12 月からエンジンとフレームワークを開発しました (とても忙しかったです!)。 新機能と重大な変更について説明しました 以下に注目すべきと思われる点を示します。最大のものが来ました Framework タグと Tool タグからだけでなく、 いくつかの重大な問題も修正されました。

フレームワーク

Flutter のアニメーション サポートをより完全なものにするために、 このリリースでは、さらにいくつかの標準イージング関数が追加されています。

#25788Robert Penner のイージング関数を追加

Android とより完全に統合するには、 このリリースでは、次のサポートが追加されていますAndroidアプリバンドル、 アプリのサイズを削減するのに役立つ新しいパッケージ形式 Android アプリの動的配信などの新機能が有効になります。

#24440Android アプリバンドルのサポートの追加

iOS とより完全に統合するために、このリリースでは、新しい CupertinoTheme を含む、iOS 用のいくつかの新機能と修正が追加されています。

#25183CupertinoTabView に navigatorKey を追加

#25593CupertinoTabScaffold でキーボード インセットも処理できるようにする

#24876iOS でフェードインとフェードアウトを追加し、角を丸め、オフセットを修正し、カーソルの高さを修正します

#23759クパチーノテーマを追加

iOS Cupertino テーマのサポートに加えて、このリリースではマテリアル テーマも引き続き強化されています。

#24169[マテリアル] ダイアログ上のテーマに対応した標高

#25339[マテリアル] AlertDialog のテーマ対応 TextStyles

Android タブレットや ChromeOS などのデスクトップ フォーム ファクタ、およびデスクトップ Web およびデスクトップ OS のサポートとより完全に統合するために、このリリースでは、ファースト クラスの入力デバイスとしてキーボードとマウスのサポートが強化されています。

#7758組み合わせキャラクター実装の推奨実装

#27853文字イベントと未変更のコードポイントを Android の生のキーイベント処理に接続します。

#27620キーボードのキーコードジェネレーターを追加する

#27627論理キーイベントと物理キーイベントのサポートの追加

#6961ホバーイベントのサポートをエンジンに追加する

#24830マウスポインタのホバーサポートを実装する

ウィジェットは Flutter でユーザーと対話するための中心的な方法であるため、このリリースでは、特に注意を払って Flutter ウィジェット セットに機能と修正を追加し続けます。SliverAppBar:

#26021SliverAppBar のタイトルの不透明度を修正し、すべてのケースをテストする

#26101フローティングスナップ SliverAppBar のクラッシュを修正

#25091SliverAppBar ドキュメントにアニメーションを追加する

#24736FAB にさらにいくつかの場所を提供します

#25585TextStyle のフォント フォールバック API を公開、ロール エンジン 54a3577c0139..215ca1560088

#24457マテリアル TextField の Android および iOS ジェスチャを修正する

#24554力押しジェスチャ検出器と認識器を追加します

#23919TabBar のタップの検出を許可する

#25384フローティングカーソルのサポートを追加

#24976TextField の複数行のヒント テキストをサポート

#26332Strut: テキストの最小行の高さを微調整して制御し、行の高さを強制的に指定の高さにすることができます。

そして最後に、Flutter の使用が世界中で増え続けているため、このリリースではウクライナ語、ポーランド語、スワヒリ語、ガリシア語を含む複数の言語にわたるローカリゼーションのサポートを強化し続けています。

#25394ローカリゼーションを更新する

#27506スワヒリ語のサポートを追加しました (material_sw.arb)

#27352ガリシア語を含む

プラグイン

フレームワークやエンジンそのものと同様に、プラグインの品質にも引き続き注力していきます。

flutter/エンジン#7317iOS プラットフォーム ビューの古い GrContext を修正

flutter/エンジン#7558iOS プラットフォーム ビューのロスト タッチ イベントを修正

flutter/プラグイン#1157[google_maps_flutter] iOS でのカメラの位置の問題を修正

flutter/プラグイン#1176[firebase_auth] Android での Firebase 電話認証を修正しました

flutter/プラグイン#1037[カメラ] iOS で写真の向きを保存する

flutter/プラグイン#1129[android_alarm_manager] 「バックグラウンドでの開始は許可されていません」問題を修正し、受信したイベントが早すぎるとキューに入れてしまう

flutter/プラグイン#1051[image_picker] ピッカーを複数回タップしたときの iOS でのクラッシュを修正

webview_flutter プラグインは、Dart と JavaScript 間の通信チャネルを取得しました。

flutter/プラグイン#1116WebView JavaScript チャネルの追加 (Dart 側)

flutter/プラグイン#1130WebView JavaScript チャネル Android 実装

flutter/プラグイン#1139WebView JavaScript チャネル - iOS 実装

ラッター/プラグイン1021JavaScriptの評価iOS/Android

In App Purchase プラグイン (まだプレリリース) の構築が進みました。

#1057[IAP] 支払いプロセッサが利用可能かどうかを確認する

#1084[IAP] Google Play から SkuDetails を取得する

#1068IAP 製品リスト iOS

#1172[In_app_purchase] 支払いオブジェクト トランスレータを追加

ダーツ

このリリースには、新しいセット リテラル構文のサポートを提供する新しい Dart SDK が含まれており、コンストラクターまたは静的メソッドの呼び出しのオーバーヘッドを削減することで AOT パフォーマンスが 10 ~ 20% 向上します。

#37リテラルの設定

#33274「ネイキッド」命令のサポートを追加: グローバル オブジェクト プール、PC 相対静的呼び出し、より高速な間接呼び出し、潜在的なコード共有

道具

このリリースでは、既存のツールに多数の新しいツールと新機能を追加しました。

このリリースでは、さまざまなツールにわたってエラー メッセージが引き続き改善されています。

#26107Flutter ツールのエラー メッセージの改善 - 動的フラグ

#26084コンパイルトレーニングデータを保存するときのメッセージを改善しました

#25863動的パッチ適用時のメッセージが分かりやすくなりました

このリリースでは、Java 1.8 のサポートも追加されています。

#25470Java 1.8をサポート

ひどい

このリリースでは、2 件のクラッシュと 1 件のパフォーマンス低下など、以前のリリースで発生したいくつかの重大な問題を発見し、修正しました。

クラッシュ

#7314起動時に flutterがクラッシュする (メタバグ)

パフォーマンス

#25381カリング不透明度パフォーマンス テストをデバイス ラボに追加

重大な変更

お客様のニーズに合わせて Flutter 1.0 以降の改善を継続するために、いくつかの重大な変更を加える必要がありました。

#8769ListItem の名前を ListTile に変更し、ListTile の固定高ジオメトリをドキュメント化します。

多くの開発者は、ListItem の高さが固定であるという事実に混乱しました。 (他のタイルと同様に) 高さが固定されていることを示すために、名前を ListTile に変更しました。また、ListTile についてそのことを明確に示すためにドキュメントが更新されました。コード内で ListItem クラスのインスタンスの名前を ListTile に変更する必要があります。

#7518iOS 埋め込み用のデフォルトの flutter_assets パスを更新する

iOS アプリケーションの Flutter アセットは、flutter_assets ではなく Frameworks/App.framework/flutter_assets に配置されるようになりました。 Flutter コマンド ライン ツールはこの違いに対処する必要がありますが、Flutter とアセットを共有する iOS 用の AddToApp アプリケーションを作成している場合は、この変更に注意する必要があります。

#27697クパチーノのテキストフィールドカーソルの修正

CupertinoTextField のcursorColor のデフォルトがアプリのテーマと一致するようになりました。これが望ましくない場合、開発者は ThemeData の cupertinoOverrideTheme プロパティを使用して、CupertinoThemeData オブジェクトを使用してクパチーノ固有のオーバーライドを提供できます。例:

Widget build(BuildContext context) { 
  // Set theme data for override in the CupertinoThemeData's constructor 
  Theme.of(context).cupertinoOverrideTheme = CupertinoThemeData(  
    brightness: Brightness.dark,  
    primaryColor: Color(0xFF42A5F5) 
  ); 
  return Text( 
    'Example', 
    style: Theme.of(context).textTheme.title, 
  ); 
}

#23424DragGestureRecognizer にドラッグ開始動作を教える

デフォルトでは、ドラッグ ジェスチャ検出器の onStart コールバックは、タッチ ダウンの位置ではなく、ドラッグ ジェスチャが検出された位置 (つまり、特定のピクセル数をドラッグした後) で呼び出されます。特定のドラッグ ジェスチャ レコグナイザーで古い機能を使用するには、レコグナイザーの dragStartBehavior 変数を DragStartBehavior.down に設定する必要があります。たとえば、GestureDecorator を宣言するときに以下の太字の行を含めます。

GestureDectector( 
  dragStartBehavior: DragStartBehavior.down,
  onVerticalDragDown: myDragDown 
  onVerticalDragEnd: myDragEnd, 
  onVerticalDragStart: myDragStart, 
  onVerticalDragUpdate: myDragUpdate, 
  onVerticalDragCancel: myDragCancel, 
  onHorizontalDragDown: myDragDown 
  onHorizontalDragEnd: myDragEnd, 
  onHorizontalDragStart: myDragStart, 
  onHorizontalDragUpdate: myDragUpdate, 
  onHorizontalDragCancel: myDragCancel, 
// Other fields… 

#26238長い間非推奨となっていた TwoLevelList を削除する

長い間非推奨となっていた TwoLevelList ウィジェットを削除しました。代わりに ListView と ExpansionTile を使用してください。見るこの例ExpansionTile を使用するサンプルの場合。

####7442Picture.toImage のラスタライズを GPU スレッドに移動する

Picture.toImage が返されるようになりました。Future<Image>その代わり。これにより、GPU スレッド上で画像のラスタライズが行われるようになり、多くの場合パフォーマンスが向上し、正しい結果が保証されます。少なくとも、次のように、Picture インスタンスを呼び出すメソッドを async として宣言し、await を使用する必要があります。

`void usePictureImage(Picture p) async { 
  var image = await p.toImage(); 
  // Do something with the pixels in image…. 
}

ただし、アプリケーションが他の非同期アクションを実行している可能性もあり、その観点から画像処理をどのように処理するかを検討する必要があります。 Dart の非同期プログラミングと Future クラスのサポートの詳細については、次を参照してください。https://www.dartlang.org/tutorials/ language/futures。

#7567embedder.h の FlutterResult の名前を変更します。

Embedder API では、その目的をよりわかりやすく説明するために、FlutterResult タイプの名前が FlutterEngineResult に変更されました。前者のインスタンスの名前を後者に変更する必要があります。

#7414ストラットの実装

dart:uiの名前をParagraphStyle.lineHeightからParagraphStyle.heightに変更します。以前は、ParagraphStyle.lineHeight プロパティは何も行わず、TextStyle.height との一貫性を保つために名前が変更されました。前者のインスタンスの名前を後者に変更する必要があります。

回帰

1.2 リリース直後、次の 2 つの回帰が見つかりました。

  • #28640NoSuchMethodError: android.view.MotionEvent.isFromSource

flutter/ flutter#24830(「マウス ポインターのホバー サポートを実装する」) は、古いデバイスには存在しない Android API を使用しています。これにより、Android 4.1 (Jellybean) および 4.1 (Jellybean MR1) でクラッシュが発生する可能性があります。

  • #28484Flutterアップデート以降、ウィジェットのレンダリングがおかしくなる

これにより、物理 iOS デバイスに特定の画像を読み込むときにレンダリングの問題が発生する可能性があります。

これらの回帰を修正するには、ベータ 1.3 が 3 月にリリースされたら、ベータ チャネルに切り替えてコマンド ラインで「 flutter アップグレード」を実行します。この記事の執筆時点では、少なくともバージョン 1.3.8 に更新されます。 flutter/エンジン#8006(「API レベル 16 および 17 で定義されていない Android API の使用を防ぐ」) およびレンダリングの問題を修正する Skia コミット。クラッシュの問題に関しては、影響を受ける Android の 2 つのバージョンは 10 年以上前のもので、Android ユーザーの最大 2.5% を占めており、Flutter であるかどうかに関係なく、新しい Android アプリケーションをインストールするユーザーはほとんどいないでしょう。それでも、既知のリグレッションを安定版リリースに残すことは嫌いですが、社内で多くの議論を行った結果、これがインフルエンザに対して最善の方法であると判断しました。開発者とそのアプリのユーザーを悩ませます。

深刻な問題に対する理想的な修正は、既存のリリースを利用して「ホットフィックス」リリースを作成し、適用したい修正を「厳選」することです。既存の安定版リリースにホットフィックスを適用する機能は、1.2 で実装されましたが、実稼働品質にはまだ達していません。この結果、リグレッションを修正した新しい安定版「1.2.1-a」リリースを作成していたら、すべてのユーザーがそのブランチで足止めされていたでしょう。将来のブランチに更新するには必要がありますユーザーに Flutter を削除して最初から再インストールするよう要求しましたが、これは明らかに受け入れられませんでした。この問題が再び発生しないように、1.3 以降でホットフィックスを適用できるかどうかを検証するために懸命に取り組んでいます。

もう 1 つの選択肢は、1.3 を安定版リリースにすることです。私たちの現在のポリシーは、Flutter 開発者の離脱を減らすために、四半期に 1 回だけ新しい安定版リリースをリリースすることです。この記事の執筆時点では、安定版 1.3 リリースには 104 個のフレームワーク コミット (さらに多くのエンジン、Dart、Skia コミット) が含まれており、そのどれもが現在のアプリの実行方法にリスクをもたらします。そのリスクを軽減するために、リリースを 1 か月間ベータ版のままにし、開発者にテストしてもらい、安定版リリースのみをプロモートします。私たちがそれらに自信を持っているとき。このようにして、四半期ごとのリリースの安定性を維持しています。

現在、次の安定版リリースは 2019 年 5 月に予定されており、これがこの回帰の修正を含む最初の安定版リリースとなります。影響を受けている場合#28640プレリリース 1.3 を使用するという回避策は選択肢にないと思われる場合は、 までにお知らせください。 flutter/ flutter#29235自体。同様に、次のような影響を受けている場合は、#28484、それについてはわかります flutter/ flutter/#29360。 Flutter コミュニティから、私たちがここで間違った決定をしたという多くのフィードバックがあることが判明した場合、私たちはあなたのフィードバックを使用して再評価します。結局のところ、Flutter はコミュニティの取り組みであり、あなたの意見が重要です。

ツールのリリース

1.2 リリースでの Flutter フレームワークの変更に加えて、同じ期間内に多数のツールのリリースを作成しました。これについては、以下を参照してください。

  • Visual Studio Code の Dart & Flutter サポート: バージョン2.21、2.22、2.23と2.24。
  • IntelliJ および Android Studio の Dart および Flutter サポート:2019年1月と2019年2月リリースします。
  • Dart 開発ツールアルファ版リリース。

全問題リスト

ご覧いただけますこのリリースでコミットされた PR の完全なリスト