Flutter documentation( Https://docs.flutter.dev )についてのリファレンスBlogです。
1.Get started 【 始める 】
1-1.導入
(1)Install Flutter ( インストール手順 )
・Test drive
・Write your first app
・Learn more
(2)From another platform ( 他プラットフォーム開発者向け )
・for Android devs
・ for SwiftUI devs
・ for UIKit devs
・ for React Native devs
・ for web devs
・ for Xamarin.Forms devs
・ Introduction to declarative UI
・ Flutter versus Swift concurrency
(3) Dart language overview
1-2.Stay up to date / 最新情報
(1)upgrade
(2) SDK archive
(3) What’s new ( 新着情報 )
(4) Release notes
(5) Breaking changes ( 重大な変更 )
(6) Compatibility policy
1-3.Codelabs & samples / コードラボとサンプル
(1)Codelabs ( コードラボ )
(2)Cookbook ( 料理本 )
(3)Samples and demos ( サンプルとデモ )
1-4.App solutions / アプリソリューション
(1)AI ( 人工知能 )
・概要
・Gemini APIを使い始める
・Google AI Dart SDK(pub.dev)
・Google AI Dart SDK で構築する(ビデオ)
(2)Firebase & Firestore
・概要
・Flutter向けFirebaseについて知る
・Flutter向けFirebaseについて知る
・FirebaseUI を使用してFlutter アプリにユーザ認証フローを追加する
・Web向けFirebaseについて知る
(3)Games ( ゲーム )
(3-1)概要
(3-2)成果物アプリとリーダーボードを登録する
(3-3)Firestore にリーダーボードを構築する
(3-4)広告を追加する
(3-5)マルチプレイヤーサポートを追加
(3-6)アプリ内購入を追加する
(3-7)ユーザー認証を追加する
(3-8)Crashlytics を使用したデバッグ
(3-9)Flutter を使ったFlame 入門
参考)
(参照元)https://github.com/flutter/codelabs
- Flutterのアダプティブアプリ:
adaptive_app
・どのプラットフォーム(Android、iOS、ウェブ、Windows、macOS、Linux)にも適応する Flutter アプリの作成方法。- FirebaseUIを使用してFlutterアプリにユーザー認証フローを追加する:
firebase-auth-flutterfire-ui
- Flutterアプリにホーム画面ウィジェットを追加する:
homescreen_codelab
・iOS と Android でホーム画面ウィジェットを作成する方法。
・home_widget パッケージを使用して、ホーム画面ウィジェットと Flutter アプリ間でデータを共有する方法。
・書き直す必要があるコードの量を減らす方法。
・Flutter アプリからホーム画面ウィジェットを更新する方法。- FlutterアプリにGoogleマップを追加する:
google-maps-in-flutter
- Flutterアプリにアプリ内購入を追加する:
in_app_purchases
- FlutterアプリにWebViewを追加する:
webview_flutter
・url_launcher などで外部サイトにアクセスするのではなく、アプリ内で実装することでアプリ独自の操作も可能になる。- TensorFlow AgentsとFlutterを使ったボードゲームの構築:
tfagents-flutter
・人間のプレーヤーと対戦する ML 搭載エージェントで、ボードゲーム アプリを作成する。- フルスタックの映画推薦システム(recommenders)の構築:
tfrs-flutter
(1) 以下を使用してフルスタック Recommender を構築する方法を学びます。
①映画のレコメンデーション用の取得モデルとランキング モデルをトレーニングするための TensorFlow Recommender
②モデルを提供する TensorFlow Serving
⓷Flutter でおすすめの映画を表示するクロスプラットフォーム アプリを作成
(2) 前提条件
①Dart を使った Flutter の開発に関する基本的な知識
②TensorFlow を使用した機械学習に関する基本的な知識(トレーニングとデプロイなど)
⓷レコメンデーション システムに関する基本的な知識
④Python、ターミナル、Docker に関する基本的な知識
(3) 学習内容
①TensorFlow Recommender を使用して取得モデルとランキング モデルをトレーニングする方法
②TensorFlow Serving を使用してトレーニング済みレコメンデーション モデルを提供する方法
⓷おすすめアイテムを表示するクロス プラットフォームの Flutter アプリを作成する方法
(4) 関連情報
①TensorFlow Reocommenders のホームページ
②TensorFlow Serving のホームページ
⓷TensorFlow によるレコメンデーション システムの構築に関する YouTube 動画シリーズ- Material 3を使用したアニメーションレスポンシブアプリレイアウトの構築:
animated-responsive-layout
・モックのメッセージ アプリ(以下の機能を実装)を作成します。
・アダプティブ デザインを使用して、デスクトップまたはモバイルで動作するようにする。
・アニメーションを使用して、レイアウトを簡単かつ流れるように切り替える。
・マテリアル 3 を使用して表現豊かなスタイル設定を行う。
・Android、iOS、ウェブ、Windows、Linux、macOS で実行する。
(参考)Material Design- Flutterで次世代UIを構築する:
next-gen-ui
・フル機能(アニメーション、フラグメント シェーダー、パーティクル アニメーション)ゲーム イントロ スクリーン構築。
(参考)
・flutter_animate
パッケージをチェック
・Flutter のフラグメント シェーダー サポートに関するドキュメントを確認
・パトリシオ・ゴンザレス・ヴィヴォとジェン・ロウ著『The Book of Shaders』
・シェーダー トイ、共同シェーダー プレイグラウンド
・simple_shader、シンプルな Flutter フラグメント シェーダーのサンプル プロジェクト- PaLM APIとFlutterを使ってGoogle製品に関する俳句を作成:
haiku_generator
(警告) PaLM API は廃止されています。Vertex AI PaLM API は、 2024 年 10 月に廃止される予定です。Gemini API にアップグレードしてください。詳しくは、PaLM API 非推奨ガイドをご覧ください。- Dartのパターンと記録を詳しく見る:
dart-patterns-and-records
・さまざまな型の複数の値を格納するレコードの作成方法
・レコードを使用して、関数から複数の値を返す方法
・パターンを使用して、レコードやその他のオブジェクトのデータの照合、検証、分離を行う方法
・パターンに一致した値を新規または既存の変数に束縛する方法
・新しい switch 機能、switch 式、if-case 文の使用方法
・網羅性チェックを活用して switch 文または switch 式ですべての case が処理されていることを確認する方法
(参考)
・パターン機能仕様
・徹底的なチェック
・クラス修飾子- Flutterアプリでテキスト分類を始める:
tfserving-flutter
①TensorFlow Serving を使用した Flutter アプリでのテキスト分類(動画)
②TensorFlow Lite Model Maker でコメントスパム検出モデルをトレーニング(受講)
・Colab を使用して TensorFlow Lite Model Maker をインストールする方法。
・Colab サーバーからデバイスにデータをダウンロードする方法。
・データローダの使用方法。
・モデルの作成方法。
(詳細)
・TensorFlow Core による基本的なテキスト分類
・TensorFlow Hub によるテキスト分類: 映画レビュー
③テキストを分類し、その結果を UI に表示する Flutter アプリの構築方法(受講)
(前提条件)
・Dart を使った Flutter の開発に関する基本的な知識
・TensorFlow を使用した機械学習に関する基本的な知識(トレーニングとデプロイなど)
・ターミナルと Docker に関する基本的な知識
・TensorFlow Lite Model Maker Codelab でコメントスパム検出モデルをトレーニングする
(内容)
・簡単な Flutter アプリを作成し、TensorFlow Serving(REST と gRPC)を使用してテキストを分類する方法。
・結果を UI に表示する方法。
④Flutter アプリでテキスト分類を強化し、当初トレーニング後より多くスパムを検出する(動画)
⑤TensorFlow Lite Model Maker により特定種類スパム検出の為にスパム検出モデル再トレーニングする(受講)
(内容)
・TensorFlow Lite Model Maker Codelab によるコメントスパム検出モデルのトレーニングで作成したテキスト分類モデルを更新する方法。
・アプリで最も蔓延するスパムをブロックするようにモデルをカスタマイズする方法。- Flutter向けFirebaseについて:
firebase-get-to-know-flutter
- Flutterアプリのテスト方法:
testing_codelab
- Flutterを使ったFlame入門:
brick_breaker
- Firebase Emulator Suiteを使用したFlutterアプリのローカル開発:
firebase-emulator-suite
- Flutterアプリを退屈なものから美しいものに変える:
boring_to_beautiful
- FlutterプラグインでFFIを使用する:
ffigen_codelab
- Flutterデスクトップアプリケーションの作成:
github-client
- 最初のFlutterアプリ:
namer
Flutter アプリを「退屈なアプリ」から「見栄えの良いアプリ」に変える
(参考)
・テーマ設定
・Material Theme Builder(ツール)
・アダプティブ リソースとレスポンシブ リソース
・大画面に対応したアプリを準備するために行う 5 つのこと(Google I/O 2021 の動画)
・アダプティブ / レスポンシブでの Flutter のデコード(動画)
・アダプティブ レイアウト(Boring Flutter Development Show の動画)
・レスポンシブでアダプティブなアプリの作成(flutter.dev)
・Flutter のアダプティブ マテリアル コンポーネント(GitHub のライブラリ)Flutter アプリにアプリ内購入を追加する
(関連情報)
・Flutter カジュアル ゲーム ツールキット
・Flame Engine
・Flutter と Flame で新しい Super Dash デモをわずか 6 週間で構築した方法を紹介します。
(4)Monetization ( 収益化 )
(4-1)広告
①広告の概要
②広告を追加する
⓷FlutterアプリにAdMob広告を追加する
④AdMobバナーとネイティブインライン広告を追加する
⑤Google AdMobメディエーション
⓺インタラクティブメディア広告SDK
(4-2)アプリ内課金
①アプリ内購入の概要
②アプリ内購入を追加する
(4-3)支払い
①支払いの概要
②Googleペイパッケージ
(5)Maps ( 地図 )
(5-1)アプリに地図を追加する
(5-2)FlutterアプリにGoogleマップを追加する
(6)News ( ニュース )
(6-1)ニュースアプリを構築する
・Flutter でニュースアプリを素早く構築する方法(動画)
2.User interface
2-1.Introduction
・Flutter でユーザー インターフェースを構築する
2-2.Widget catalog / ウィジェットカタログ
(1)デザインシステム
・Cupertino
・Material components
(2)基本ウィジェット
①Accessibility ( アクセシビリティ )
②Animation and motion ( アニメーションとモーション )
③Assets, images, and icons ( アセット、画像、アイコン )
④Async ( 非同期 )
⑤Basics ( 基礎 )
⓺Input ( 入力 )
⓻Interaction models ( インタラクションモデル )
(タッチ イベントに応答し、ユーザーをさまざまなビューにルーティングします。)
⑧Layout ( レイアウト )
(他のウィジェットの列、行、グリッド、その他のさまざまなレイアウトを配置します。)
⑨Painting and effects ( 絵画と効果 )
(これらのウィジェットは、レイアウト、サイズ、位置を変更せずに、子に視覚効果を適用します。)
➉Scrolling ( スクロール )
(複数のウィジェットを親の子としてスクロールします。)
⑪Styling ( スタイリング
(アプリのテーマを管理し、画面サイズに合わせてアプリをレスポンシブにしたり、パディングを追加したりします。)
⑫Text ( 文章 )
(テキストを表示およびスタイル設定します。)
(3)今週のウィジェット
2-3.Layout / レイアウト
2-3-1.Introduction / Flutter のレイアウト
2-3-2.Build a layout / Flutterレイアウトを構築する
2-3-3.Lists & grids / リスト と グリッド
(1)Create and use lists ( ListView )
(2)Create a horizontal list ( 水平リスト )
(3)Create a grid view ( GridView )
(4)Create lists with different types of items
(5)Create lists with spaced items
( 間隔をあけた項目のリスト )
(6)Word with long lists
( 長いリストを扱う )
2-3-4.Scrolling / スクロール
(1)Overview
( さまざまなスクロール )
(2)use slivers to archieve fancy scrolling
( CustomScrollViewと統合するマテリアル アプリバー )
(3)Place a floating app bar above a list
(4)Create a scrolling parallax effect
( スクロール視差効果を作成する )
2-4.Adaptive & responsive design / 適応型デザイン
(1)overview ( 概要 )
ここでは適応型デザインの根幹となる一般的なウィジェットについて触れています。
以下は(全てではありませんが)概ねざっくりと、その一般的なウィジェットについて纏めてあります。
(2)General approach ( 一般的なアプローチ )
(2-1)抽象化
適応型デザインでは、画面サイズにより、複数並列したウィジェット切替が発生します。
これを前提にすると、それらの共有情報を別のウィジェットとして作成しておく必要があります。
(2-2)測定
冒頭にあった様に、UIを切替える際、画面サイズを測定して、それを基に実装する必要があります。
(2-3)UI分岐
どのUIバージョンを表示するかを決定する際に、どのサイズのブレークポイントを使用するかを選ぶ必要があります。
(3)SafeArea & MediaQuery ( セーフエリア と メディアクエリ )
現代のスマートフォンやタブレットは、ディスプレイデザインが多様化しており、画面の一部にノッチやカメラの切り欠き、丸みを帯びた角などが存在します。これにより、通常のUIレイアウトが意図しない形で見えなくなったり、操作しにくくなったりすることがあります。
SafeAreaは、こうしたデバイスの物理的な特性による問題を解決するために、Flutterが提供するウィジェットです。
具体的には、子ウィジェットを画面の安全な領域に配置するために使用されます。安全な領域とは、ノッチやステータスバー、画面の丸みを避けた領域のことです。
(4)Large screens & foldables ( 大型スクリーンと折りたたみ式 )
(5)User input & accessibility ( ユーザー入力とアクセシビリティ )
(6)Capabilities & policies ( 機能とポリシー )
(7)Best practices ( 適応型アプリのベストプラクティス )
(8)Additional resource ( 追加リソース )
2-5.Design & theming / デザインとテーマ
(1)Material2からMaterial3へ(主なコンテンツについて)
(2)文章
google_fonts 6.2.1:
https://pub.dev/packages/google_fonts#:~:text=x-,google_fonts%206.2.1,-Published%207%20months
(3)カスタムグラフィック
2-6.Interactivity / インタラクティブ性
(1)ジェスチャー
(2)入力とフォーム
2-7.Assets & media / アセットとメディア
2-8.Navigation & routing / ナビゲーション と ルーティング
□ iOS のユニバーサルリンクの設定
2-9.Animations & trasitions / アニメーションとトランジション
2-10.Accessibility & internationalization / アクセシビリティと国際化
□ アプリの国際化(https://docs.flutter.dev/ui/accessibility-and-internationalization/internationalization)
3.Beyond UI 【 UIを超えて 】
3-1.Data & backend / データとバックエンド
(1)状態管理
・Redux
・BLoC / Rx
・GetIt / ValueNotifiers
・GetIt Mixin
・GetIt Hooks
・MobX
・RxCommand / Stream
・Binder
・GetX
・states_rebuilder
・Triple Pattern
・flutter_solidart
・flutter_reactive_value
・Elementary
(2)ネットワークとhttp
(3)シリアル化
(4)持続性
■SQLiteによるデータ永続化
(5)Firebase
(6)Google API について
3-2.App architecture / アプリのアーキテクチャ
□アーキテクチャ推奨リソース
- コードとテンプレート
- ドキュメント
- ツーリング
□デザインパターン
データ永続化(Optimistic stateの考え方含む)
オフラインファースト(Optimistic stateの考え方と同じ)