【Flutter】パッケージ管理
概要
前回からの続きです
Flutterアプリ開発の学習において備忘録を記す。
今回は「パッケージ管理」についてです。
●検証環境
macOS Sonoma 14.3
VSCode 1.89
Flutter 3.22.2
Dart 3.4.3
pub.dev
●pub.dev
pub.dev(https://pub.dev)は、DartやFlutterのパッケージにおける公式リポジトリである。
ここで使いたいパッケージを検索していく。
もちろん自分で作ったパッケージを公開することも出来る。
定番パッケージ
Flutter Hooks ( flutter_hooks )
Hooksのパッケージ。
・ウィジェット内での状態管理(useState)
・ウィジェットの初回/終了時の処理と言った『副作用』(useEffect)
等で使う。依存配列にも対応。
React hooksをモチーフとしているので、React経験者なら理解が早い。
Riverpod ( flutter_riverpod )
状態管理のパッケージ。
・ウィジェット間で状態を共有するのに使う。
1.Providerで、状態のプロバイダーを作成。
2.ConsumerWidgetで、状態を監視。
3.Notifierで、更新を通知する。
てな感じで、使うのには慣れが必要っぽい。
Flutterはそのままだと、状態管理がスッゲー面倒臭いので、殆どの人が導入している。
Freezed ( freezed )
データクラスのコードを自動生成してくれる。
Immutableなクラスも得意。
Build Runner ( build_runner )
コードの自動生成を実行する。
おそらくFreezed等と組み合わせて使うのであろう。
$ flutter pub run build_runner build --delete-conflicting-outputs
とする。( --delete-conflicting-outputs は既存のものを上書きするオプション)
これらは、Flutterアプリ開発に欠かせないとされている。
pubspec.yaml
pubspec.yaml
pubspec.yamlはビルド情報の設定ファイルである。
主に、パッケージの依存関係で編集する。
dependencies:
パッケージの依存関係を記入する
バージョン指定
記法はセマンティックバージョニングでする。
【例:Riverpodの場合】
flutter_riverpod: ^2.5.1
2.5.1 以上 3.0.0 未満
俗に言うキャレット。無難なので良く使われる。
flutter_riverpod:
バージョン指定なし。
可能な限り最新バージョンとなる。
※「 flutter_riverpod: any 」としても同じ
flutter_riverpod: 2.5.1
2.5.1 のみ
flutter_riverpod: >=2.5.1
2.5.1 以上
flutter_riverpod: <=2.5.1
2.5.1 以下
flutter_riverpod: <2.5.1
2.5.1 未満
flutter_riverpod: '>=2.5.1 <3.0.0'
2.5.1 以上 3.0.0 未満
dev_dependencies:
開発で使うパッケージの依存関係
「freezed」や「build_runner」はこちらの方に記載する
pubspec.lock
pubspec.yamlを元に生成され「実際に使うバージョン」が自動で記載される。
pubspec.yamlと違い、こちら側が編集する事はない。
コマンド
flutter pub get
pubspec.yamlに記載された依存関係が反映される。
・VSCodeの場合
VSCodeだと記入後に保存すると、自動的に「flutter pub get 」が行われ追加してくれる。
他のコマンドも、なるべく自動的にしてくれるものと思われる。
flutter pub add パッケージ名
パッケージ追加
flutter pub remove パッケージ名
パッケージ削除
flutter pub upgrade
最新バージョンにアップグレードする。
pubspec.yamlのバージョン指定は無視される。
flutter clean
中間ファイルを削除し、クリーンな状態にしてくれる。
変な風に残ってしまったファイルを削除してくれるので、ビルド不調時とかに重宝する。
パッケージ管理においては
flutter clean
flutter pub get
と組み合わせると、古いパッケージを削除して、やり直してくれる。
不調の際には試してみよう。
実例
Flutter Hooksを例とする。
・バージョン指定
Flutter Hooksは、現時点で 0.20.5 が最新。
メジャー自体が 0 なので、バージョン指定無し(最新)でする。
・追記
pubspec.yamlのdependenciesに flutter_hooks: を追記する
※ 「パッケージ名:」と『バージョン』の間は、必ず半角スペースを開ける
※ 最初から書かれているものは消さない
(先述通り)VSCodeだと記入後に保存すると、自動的に「flutter pub get 」が行われ追加してくれる。
●実装例
1.Flutter Hooksパッケージをインポート
2.StatelessWidget → HookWidget にする
3.HooksのuseState
4.値は .value でアクセス
5.カウントアップ。状態管理下なので更新するとビューは再描画される
アプリ起動時
ボタン押下でカウントアップ
著書
『 プログラマーにおくるAndroidアプリ開発の入門書 』
2024年6月時点での最新技術をぎっしりと詰め込んであるので、アプリ開発に参画するエンジニアの人は、是非ともご覧になって頂ければと思います📱