blog

Flutter 1.20を発表する

GoogleのFlutterの目標は、どんなデバイスでも素晴らしい描画体験ができる便利なツールキットを提供することで、リリースのたびに、Flutterが高速で、美しく、効率的で、あらゆるプラットフォー...

Sep 19, 2020 · 12 min. read
シェア

GoogleのFlutterの目標は、どんなデバイスでも素晴らしい描画体験ができる便利なツールキットを提供することです。そのため、リリースのたびに、Flutterが高速で、美しく、効率的で、あらゆるプラットフォームに対してオープンであることを確認するよう努めており、本日リリースブランチにリリースされたバージョン1.20では、これら4つすべてに焦点を当てています。改良。

高速のカテゴリーでは、基礎となるレンダリングエンジンからDart言語自体に至るまで、いくつかのパフォーマンス向上が実装されています。

開発者がより美しいFlutterアプリを構築できるよう、バージョン1.20では待望のUIを含むいくつかの機能強化が行われています。

  • オートフィルのサポート
  • パンやズームをサポートする新しいウィジェットの重ね方。
  • 新しいマウスカーソルのサポート。

Flutterの生産性をさらに向上させるため、Visual Studio Code用のFlutter拡張機能がアップデートされ、Dart DevToolsを直接IDEに取り込み、ファイルを移動する際にimportステートメントを自動的に更新し、独自のツールを構築するための新しいメタデータセットを提供します。

Flutterのオープンさと素晴らしいコミュニティ貢献者のおかげで、この安定版リリースには3,920のマージされた PRと 5,584の クローズされた問題が含まれています。

実際、これはFlutterのリリースバージョンに含まれるコミュニティからのコントリビューションの数としては最大であり、これらのコミュニティのコントリビューターには特別な感謝を捧げます:

  • CareF 28のPR
  • a14n 13のPR
  • a14n 13のPR

Flutterをリリースし続けることは、コミュニティの幅広い貢献者のチームなしには不可能です!

Flutterの新バージョンが出るたびに勢いは増し、実際4月にはGoogle PlayショップのFlutterアプリの数が5万に達し、ピーク時には月に1万もの新アプリが登場したと報告されました。

わずか3ヶ月でGoogle Playには90,000を超えるFlutterアプリがあり、この成長の多くはインドで見られています。インドは現在Flutter開発者にとってナンバーワンの地域であり、過去6ヶ月で倍増しました。最後に、FlutterはDartなしでは生きられないので、Dartが昨年から4つ順位を上げてトップ50言語の12位に入ったというIEEEの報告を見るのは素晴らしいことです。

FlutterとDartのパフォーマンス向上

Flutterチームはアプリケーションのサイズとレイテンシを減らす新しい方法を常に探しています。一例として、前回のリリースでは アイコンフォントツリーの揺れに関するツールのパフォーマンス問題を修正し、非ウェブアプリケーションをビルドする際のデフォルトの動作をフォントツリーの揺れにしました。

アイコンフォントツリーのシェイクはアプリケーションで使用されていないアイコンを削除し、サイズを小さくします。Flutter Galleryアプリで使用した場合、アプリのサイズが100kb小さくなることがわかりました。 この動作はリリースビルドを行う際にモバイルアプリでデフォルトで発生するようになり、現在はTrueTypeフォントに限定されていますが、将来のリリースで解除される予定です。

このリリースで行われたもう1つのパフォーマンス向上は、ウォームアップフェーズの使用によるアニメーションの初期表示におけるジャギーの低減です。

Flutterアプリケーションの初回実行時にアニメーションが不安定な場合、Skia Shading Languageシェーダーがアプリケーションのビルドプロセス中にプリコンパイルを提供し、2倍以上速くすることができます。この高度な機能を利用するには、flutter.devの SkSLプリコンパイルページをご覧ください。

最後に、デスクトップ用に最適化されたマウス・サポートは引き続き改良されています。このリリースでは、マウスクリックテストシステムがリファクタリングされ、パフォーマンスの問題によって妨げられていたアーキテクチャ上の利点の多くが提供されるようになりました!これは、開発者がパフォーマンスを犠牲にすることなく、より良い、より一貫性のある、より正確なヒットテストを得られることを意味します!

より良く、より速く、より堅牢なマウスヒットテストにより、デスクトップで最も人気のある機能の1つであるマウスカーソルのサポートが追加されました。デフォルトでは、よく使われるいくつかのウィジェットは開発者が期待するカーソルを表示します。

携帯テキストフィールドの自動入力

以前から最も人気のある機能の1つは、AndroidとiOSのFlutterアプリケーションでテキストの自動入力をサポートすることでした。 PR 12526、この待ちに待った機能が追加され、オペレーティングシステムが収集したデータをユーザーが再入力する必要がなくなりました。

また、すでにウェブにも追加されていることも、嬉しいことでしょう。

一般的なインタラクション・パターンのための新しいコントロール

このバージョンでは、パン、ズーム、"N "の下へのドラッグ、あるいはこのシンプルなチェス盤に似たサイズ変更など、一般的なタイプのインタラクティブ性をアプリケーションに組み込むために設計された新しいウィジェットInteractiveViewerを導入しています。

InteractiveViewerを自分のアプリケーションに統合する方法については、DartPadで使用できるAPIドキュメントをご覧ください。また、InteractiveViewerのデザインと開発方法についてもっと知りたい方は、 Chicago Flutter on YouTubeのプレゼンテーションをご覧ください 。

もしあなたがInteractiveViewer対応のFlutterアプリに新しいインタラクションを追加することに興味があるなら、今回のリリースで "n "をドラッグするための機能が追加されたことも嬉しいことでしょう。 DragTarget onAcceptDetails 具体的には、ターゲットコントロールのどこに配置されたかを正確に知りたい場合、その情報を取得するメソッドが使えるようになりました。

詳細はこのサンプルをご覧ください。また、ドラッグ中にこの情報を提供し、DragTargetがドラッグ操作中に視覚的なアップデートをより簡単に提供できるようになる将来のリリースをお待ちください。

Material Slider、RangeSlider、TimePicker、DatePickerを更新しました。

新しいコントロールに加えて、このリリースにはスライダーとレンジスライダーを含む多くの更新されたコントロールが含まれています。詳細については、スライダーコントロールの新機能を参照してください。

DatePickerが更新され、新しいコンパクトなデザインと日付範囲のサポートが追加されました。

最後に、TimePickerは全く新しいスタイルを持っています。

もし使ってみたいなら、 Flutterで作られた楽しいウェブデモをどうぞ。

コミュニティコントリビューターのTonicArtosによる PR 57588 、Materialガイドラインに準拠するように更新されただけでなく、見栄えもよく、ナビゲートしやすくなり、携帯電話だけでなくタブレットやデスクトップでも適切に動作するように設計されています。ありがとうTonicArtos!すべてのFlutterアプリは使用するパッケージのライセンスを表示する必要があるので、すべてのFlutterアプリがより良くなります。

プラグインを公開するには、新しいpubspec.yaml形式が必要です。

もちろん、Flutterはコントロールだけでなく、ツールも重要で、このバージョンにはあまりにも多くのアップデートが含まれていますが、ここではいくつかのハイライトを紹介します。

まず最初に、公共サービスのお知らせです:もしあなたがFlutterプラグインの作者であれば、pubspec.yamlパブリッシュプラグインはもう古いフォーマットをサポートしません。pub publishを実行しようとすると、次のようなエラーメッセージが表示されます:

古いフォーマットはプラグインがサポートするプラットフォームの指定に対応しておらず、Flutter 1.12 以降では非推奨となっています。新しい pubspec.yaml フォーマットはプラグインの新規公開や更新に必要になりました。

プラグインをご利用のお客様には、これらのツールはまだ古いpubspec形式を理解しており、古い形式を使用するpub.dev上の既存のプラグインはすべて、今後しばらくの間Flutterアプリで動作し続けます。

Visual Studio Codeでの埋め込みDart DevToolsのプレビュー

このリリースで最も大きなツールの更新は Visual Studio Code 拡張機能で、開発者が Dart DevTools の画面をコーディング・ワークスペースに直接持ち込むことができる新機能のプレビューを提供します。

dart.previewEmbeddedDevTools 上のスクリーンショットは、Visual Studio Codeに直接埋め込まれたFlutter Widget Inspectorを示しており、この新しい設定を有効にすると、ステータスバーのDart DevToolsメニューを使用して、埋め込まれたお気に入りページを選択できます。

このメニューでは、表示するページを選択することができます。

この機能はまだプレビュー中ですので、何か質問がありましたら、お知らせください。(github.com/D...

ウェブトラッキングの更新

Dart DevTools の最新バージョンでは、Web ソケット解析を可能にする Network ページが更新されています。

ネットワーク」ページでは、タイミング情報だけでなく、ステータスやコンテンツタイプなどのその他の情報がアプリ内のネットワーク呼び出しに追加されるようになりました。その他、詳細 UI が改善され、ウェブソケットまたは http リクエストのデータの概要が表示されるようになりました。また、HTTPリクエスト/レスポンス・ボディやgRPCトラフィックのモニタリングなど、このページにはさらなる計画があります。

ファイル名変更時のインポート文の更新

Visual Studio Codeのもう1つの新機能は、名前の変更時にインポートを更新する機能です。

この機能は現在のところ単一ファイルに対してのみ利用可能で、複数ファイルやフォルダに対しては利用できませんが、近日中に利用可能になる予定です。

各ツールビルダーのツーリングメタデータ

Flutterツールを作っている人たちのために、Flutterフレームワーク自体のメタデータを取得して公開する新しいプロジェクトがGitHubに作られました:

  • すべてのFlutterウィジェットのカレントカタログ
  • MaterialとCupertinoカラーセットのためのFlutterフレームワーク[カラー名からカラー値へのマッピング]。
  • アイコン名とプレビューアイコンを含む、マテリアルとクパチーノのアイコンのメタデータ

これはAndroid StudioやIntelliJ、VS Codeの拡張機能で使っているものと同じメタデータです。実際、このメタデータによってIntelliJ IDEファミリーの機能がFlutterのコードで使われている色を表示できるようになります:

IntelliJのカラープレビューに貢献してくれたGitHubのdratushnyy氏に感謝します!

プラットフォーム相互接続のためのタイプセーフ・プラットフォーム・チャネル

ユーザーアンケートにおけるプラグイン作者からの共通の要望に応えて、Flutterとホストプラットフォーム間の通信をプラグインやAdd-to-Appsにとってより安全で簡単にする方法が最近試されています。このニーズに対応するため、Dart構文を使い、他のランタイム依存関係を追加することなくプラットフォームチャネルの先頭でタイプセーフなメッセージングコードを生成するコマンドラインツール、Pigeonが作られました。

Pigeonを使用すると、Java/Objective-C/Kotlin/Swiftのクラスメソッドを呼び出したり、Dartのメソッド呼び出しのコンテキストで基本データ以外のオブジェクトを渡すことができます。

まだプレリリースではありますが、Pigeonはvideo_playerプラグインで使用できるほど成熟してきました。Pigeonを試したい方は、更新されたプラットフォームチャンネルドキュメントとサンプルプロジェクトをご覧ください。

ツールのアップデートは枚挙に暇がありません

Flutter 1.20のスケジュールでは、ツールにあまりにも多くの重要な変更があったため、ここでそのすべてを列挙することはできません。しかし、アップデートのアナウンスをご自身でチェックされることをお勧めします:

重要な変更点

いつものように、主要な変更点の数を少なくするよう努めました。以下はFlutter 1.20に含まれるもののリストです。

  • CupertinoLocalizations # タブセマンティクスラベルの追加 -
  • clipRectを持つウィジェットにclipBehaviorを追加しました。
  • まだルートが残っている時にナビゲーターページの更新がクラッシュする問題を修正しました。
  • クパチーノのタブのセマンティクスをマテリアルと同じに更新
  • NestedScrollViewのスライバーを管理するオーバーラップの非推奨の子パラメーターを削除しました。
  • # iOSのミッドドラッグアクティビティインジケーター

Summary

多くの意味でFlutterにとってこれまでで最大のリリースとなるこのリリースに、あなたが同じくらい興奮していることを願っています。パフォーマンスの向上、新しいウィジェットの追加や更新、ツールの改善など、Flutterはさらに進化しています。Flutterの各リリースが以前のリリースよりも大きく、速く、強力になるように、貢献者のコミュニティが数を増やし、力強さを増していることに賞賛を送りたいと思います。NULLセキュリティのサポート、Ads、Maps、WebViewプラグインの新バージョン、そしてさらなるツールのサポートなど、まだまだ続く予定です。

Read next

Javaの<? extend E>と<? super E>である。

Javaは"?" 一般的なパラメータでワイルドカードは、役割は次のとおりです。コンテナの現在のタイプが指定されている知らない、あなたがすることができます?プレースホルダーにすることができます。 私が最初に一番戸惑ったのは、コンパイラが対応するワイルドカード型に格納できるデータをどうやって知るのかということでした。 コンパイラがリストを使用する場合、そのリストの汎用パラメータしか知らないことを覚えておいてください...

Sep 19, 2020 · 4 min read