まだ Flutter を理解できないのですか? これを読めば、あなたも遅かれ早かれ大きなボスになれるよ〜

フラッターとは

ここに画像の説明を挿入

フラッターの概要

Flutter は Google のモバイル UI フレームワークで、iOS と Android 上で高品質のネイティブ ユーザー インターフェイスを迅速に構築でき、1 つのコードで iOS と Android 用の 2 つの高性能、高忠実度のアプリケーションを同時に生成できます。Flutter の目標は、開発者がさまざまなプラットフォーム間で自然かつスムーズに操作でき、スクロール動作、タイポグラフィ、アイコンなどの違いに対応できる高性能アプリケーションを提供できるようにすることです。

Flutterの開発言語はDartなので、JavaやJavaScriptなどの言語を使ったことがある人であればすぐに始めることができ、プログラミング未経験者が書いたFlutterアプリもいくつかあります。世界中で、Flutter はますます多くの開発者や組織によって使用されており、Flutter は完全に無料でオープンソースです。

クロスプラットフォームの自己描画エンジン

Flutter は、WebView もオペレーティング システムのネイティブ コントロールも使用しないため、他のほとんどのクロスプラットフォーム フレームワークとは異なります。代わりに、Flutter は独自の高性能レンダリング エンジンを使用してウィジェットを描画します。これにより、Android と iOS での UI の一貫性が保証されるだけでなく、ネイティブ コントロールへの依存によって生じる制限や高額なメンテナンス コストも回避できます。

Flutter は 2D レンダリング エンジンとして Skia を使用します。Skia は 2D 描画エンジン ライブラリです。その前身はベクトル描画ソフトウェアです。Chrome と Android はどちらも描画エンジンとして Skia を使用します。Skia は非常に使いやすい API を提供し、グラフィックス変換、テキスト レンダリング、およびビットマップ レンダリングにおいて使いやすく効率的なパフォーマンスを提供します。Skia はクロスプラットフォームであるため、iOS のクローズドソースの Core Graphics/Core Animation を学習することなく、Flutter の iOS SDK に組み込むことができます。

現在、Flutter は iOS、Android、Fuchsia (Google の新しい自社開発オペレーティング システム) の 3 つのモバイル プラットフォームをデフォルトでサポートしています。ただし、Flutter は Web 開発 (Flutter for Web) や PC 開発もサポートできます。本書の例と紹介は主に iOS と Android プラットフォームに基づいており、他のプラットフォームの読者も独学で学ぶことができます。

フラッターの利点

高い開発効率 ミリ秒レベルのホットリロードにより、変更後はアプリケーションのインターフェースが即座に更新されます。豊富で完全にカスタマイズ可能なウィジェットを使用して、ネイティブ インターフェイスを数分で構築します。

表現力豊かで柔軟な UI ネイティブ エクスペリエンスに重点を置いた機能を迅速にリリースします。階層化されたアーキテクチャにより完全なカスタマイズが可能になり、信じられないほど高速なレンダリングと表現力豊かで柔軟なデザインが実現します。

ネイティブ パフォーマンス Flutter には、スクロール、ナビゲーション、アイコン、フォントなどの多くのコア ウィジェットが含まれており、iOS や Android 上のネイティブ アプリケーションと同じパフォーマンスを実現できます。
Flutterの開発言語

Flutter は、開発フレームワークおよびウィジェット言語として Dart を使用します。

なぜ Dart 言語を選ぶのですか?

Flutter は、フレームワーク作成者、開発者、エンド ユーザーのニーズなどの要素を考慮して、4 つの主要な側面に沿って評価されました。さまざまな言語がさまざまなレベルでいくつかの要件を満たしていることがわかりましたが、Dart はすべての評価項目で高いスコアを獲得し、すべての要件と基準を満たしていました。

Dart ランタイムとコンパイラは、Flutter の 2 つの主要な機能の組み合わせをサポートしています。

高速な JIT ベースの開発サイクル: 型付き言語を使用した形状変更とステートフル ホット リロードが可能です。

高速な起動と予測可能な運用環境のデプロイメント パフォーマンスを実現する効率的な ARM コードを生成する AOT コンパイラ。

さらに、Flutter 開発チームは、Flutter での Dart の使用を改善するためにリソースを積極的に投入している Dart コミュニティと緊密に連携しています。たとえば、Dart を採用したとき、この言語にはネイティブ バイナリを生成するためのツールチェーン (予測可能な高いパフォーマンスを達成するのに最適です) が提供されていませんでしたが、Dart チームが Flutter 用にツールチェーンを構築したため、現在は提供されています。同様に、DartVM は以前はスループットを考慮して最適化されていましたが、チームは現在、Flutter ワークロードにとってより重要なレイテンシーを考慮して VM を最適化しています。

Dart は、次の主要な基準で高いスコアを獲得します。

開発者の効率 Flutter の重要な価値提案の 1 つは、開発者が同じコード ベースを使用して iOS と Android の両方のアプリを作成できるようにすることで、エンジニアリング リソースを節約できることです。効率的な言語を使用すると、開発サイクルがさらにスピードアップされ、Flutter がさらに魅力的になります。これはフレームワーク チームと開発者にとって非常に重要です。Flutter 関数のほとんどは Dart で実装されているため、フレームワークとウィジェットの読みやすさを犠牲にすることなく、100,000 行のコードを効率的に処理する必要があります。

オブジェクト指向 非 OO 言語を使用することもできますが、それはいくつかの困難な問題を解決することを意味します。さらに、開発者の大多数はオブジェクト指向開発の経験があるため、Flutter を使用した開発方法を学ぶのは簡単です。

予測可能な、高いパフォーマンス。Flutter を使用することで、開発者が流動的なユーザー エクスペリエンスを迅速に作成できるようにしたいと考えています。これを実現するには、アニメーション フレームごとに大量のコードを実行できる必要があります。これは、フレーム落ちを引き起こす定期的な一時停止を発生させずに、高いパフォーマンスと予測可能なパフォーマンスの両方を提供する言語が必要であることを意味します。

高速なメモリ割り当て Flutter フレームワークは、基礎となるメモリ アロケータに大きく依存する関数ストリームを使用するため、小規模で短期間のメモリ割り当てを効率的に処理することが非常に重要であるため、この機能が欠けている言語では Flutter を効果的に使用できません。仕事。

1.1.2 Flutterフレームワークの構造

Flutter フレームワークは階層構造であり、各層が前の層の上に構築されます。

この設計の目標は、少ないコードでより多くのことを実行できるようにすることです。たとえば、マテリアル レイヤーはウィジェット レイヤーの基本的なウィジェットを組み合わせて構築され、ウィジェット レイヤー自体は下位レベルのオブジェクト レンダリング レイヤーから構築されます。

レイヤーは、アプリケーションを構築するための多くのオプションを提供します。フレームワークの表現力を最大限に引き出すカスタム アプローチを選択するか、コンポーネント レイヤーの構成要素を使用するか、組み合わせて使用​​します。Flutter が提供するすぐに使えるウィジェットをすべて実装することも、Flutter チームがフレームワークを構築するために使用したのと同じツールやテクニックを使用して独自のカスタム ウィジェットを作成することもできます。

何も隠されていません。必要な下位層にドリルダウンする機能を犠牲にすることなく、高レベルで統合されたウィジェットのコンセプトによる開発効率のメリットが得られます。

Flutterフレームワークはフレームワーク、エンジン、エンベッダーの3つの層に分かれています

フラッターフレームワーク

フレームワークは、UI、テキスト、画像、ボタン、その他のウィジェット、レンダリング、アニメーション、ジェスチャーなどを含む dart 言語で実装されます。この部分のコア コードは、flutter ウェアハウスの下の flutter パッケージと、sky_engine ウェアハウスの下の io、async、ui (dart:ui ライブラリは Flutter フレームワークとエンジン間のインターフェイスを提供します) およびその他のパッケージです。

フラッターエンジン

エンジンは C++ で実装されており、主に Skia、Dart、Text が含まれます。

Skia は、さまざまなハードウェアおよびソフトウェア プラットフォームに共通の API を提供するオープン ソースの 2 次元グラフィックス ライブラリです。Google Chrome、Chrome OS、Android、Mozilla Firefox、Firefox OS など多くの製品のグラフィック エンジンとして使用されており、サポートされているプラ​​ットフォームには Windows、macOS、iOS、Android、Ubuntu などが含まれます。

Dart 部分には主に、Dart ランタイム、ガベージ コレクション (GC) が含まれます。デバッグ モードの場合は、JIT (Just In Time) サポートも含まれます。リリース モードとプロファイル モードでは、AOT (Ahead Of Time) がネイティブの arm コードにコンパイルされ、JIT 部分はありません。

Text はテキスト レンダリングであり、そのレンダリング レベルは次のとおりです: Minikin から派生した libtxt ライブラリ (フォントの選択と行の分離用)、HartBuzz はグリフの選択と整形に使用されます、Skia はレンダリング/GPU バックエンドとして使用され、FreeType レンダリングを使用します。 Android および Fuchsia では、iOS で CoreGraphics を使用してフォントをレンダリングします。
埋め込み

Embedder は、Flutter をさまざまなプラットフォームに埋め込むための埋め込みレイヤーであり、主な作業には、Surface 設定、スレッド設定、プラグインのレンダリングが含まれます。プラットフォーム (iOS など) はキャンバスのみを提供し、残りのレンダリング関連ロジックはすべて Flutter 内にあるため、クロスエンドの一貫性が高くなります。

この記事はhttps://baijiahao.baidu.com/sid=1677058019872815848&wfr=spider&for=pcに転載されています。侵害がある場合は、連絡して削除してください〜

フラッターを学ぶにはどうすればよいですか?

この Google オープンソース「Flutter の概要と実践的な戦闘」は、Flutter を最短時間で学習できるようにすることを目的としています。基礎知識から応用スキルまで、豊富な例題を使って分かりやすく解説しているので、すぐに上級レベルに入ることができますので、ぜひブックマークしてください!

第 1 章 Flutter の基本関数

ここに画像の説明を挿入

第 2 章、フラッター ルーティング管理

ここに画像の説明を挿入

第3章 FlutterネットワークリクエストプラグインDio

ここに画像の説明を挿入

第 4 章、フラッター状態管理

ここに画像の説明を挿入

第5章、フラッターアニメーション

ここに画像の説明を挿入

要約する

現在、多くの Android 開発職が Flutter を習得する必要があり、雇用環境の変化に直面して、雇用環境に淘汰されないよう、もう 1 つ技術を習得したいと誰もが望んでいます。

学びたい友達は、下の名刺をクリックしてこの情報を無料で入手できます~

おすすめ

転載: blog.csdn.net/Android_XG/article/details/128316795