こんにちわ いせきです。どんどん記事を書いてアウトプットしていっています!
pubspec.yaml
の中に記載されている
・dependencies
・dev_dependencies
の二つがあり、dart Packageを入れる時にどっちを入れればいいのか!となった経験はないでしょうか?
今回は、これらの違いだけでなく、この場合はどっちを入れるのが望ましいのかを記載していこうと思います。何度も確認しながら入れてみることで理解力が増すと思います。
dependenciesとdev_dependenciesの違い
dependencies
・自分のプロジェクトを使う人にとっても必要になるPackageを設定するのに記載する。
・直接の依存関係(Packageが直接使用するソフトウェア)のみを記載する。
dev_dependencies
・あるPackageをテストにだけ使う場合は、dev_dependencies
に記載する。
・自分のプロジェクトを作っている段階でのみ必要なPackageであり、自分のプロジェクトをPackageとして他の人が使う場合に記載する
自分なりの解釈
dependencies
->チーム開発において、みんな使わないとエラーが出てしまうPackage
dev_dependencies
->チーム開発において、アプリのビルドの時に必要にならないPackage
僕の解釈も間違っている可能性があるのでご注意ください。あくまでも僕なりの解釈と思ってもらえると幸いです。
また、一人で開発する際もこの考え方はとても大切になるので気をつけながら入れてみましょう。
使用例
せっかくなので色々なPackageを入れて確認してみましょう!!!!
1、UIの作成で使用するPackageについて
試しに、flutter_rating_bar
を入れてみましょう。このPackageは、評価を行うときに簡単に実装できるPackageです。とても便利なのでぜひ使ってみてはどうでしょうか?
さあ、この場合はどうなるでしょうか。今回は、lib/
以降のファイルにコードを書いて反映させるため、みんな使えないといけませんね。そうなるとdependencies
に入れましょう。
事前にコメントアウトを削除して、綺麗な形にしておきました。
pubspec.yaml
の内容をコピペする際にはインデントに注意してください
場合によっては、Pub get
できない場合があります。
pubspec.yamlの記載例を見る
name: sample_app #自分が作成したアプリの名前
description: A new Flutter project.
publish_to: 'none'
version: 1.0.0+1
environment:
sdk: '>=2.18.4 <3.0.0'
dependencies:
flutter:
sdk: flutter
cupertino_icons: ^1.0.2
#ここに追加しましょう。
flutter_rating_bar: ^4.0.1
dev_dependencies:
flutter_test:
sdk: flutter
flutter_lints: ^2.0.0
flutter:
uses-material-design: true
どうでしょうか?なんとなくなるほど〜〜となりましたか?まだ理解していない方へ
まだ記載例を示していこうと思います。
2、状態管理で使用するPackageについて
状態管理の説明は、また別の記事で記載していこうと思います。今回は、状態管理の一つのfreezed
とfreezed_annotation
、build_runner
を使ってみようと思います。
まずは、freezed_annotation
から見ていきましょう。
freezed_annotation
は、lib/
のファイルに追加する必要があるため、みんな使えないといけませんね。そうなるとdependencies
に入れましょう。さっきと同じ考え方ですね。
次に残りのbuild_runner
とfreezed
を見てみましょう。
build_runner
は、freezed
で使用するコードを生成してくれる便利なPackageです。これは、lib/
以降のファイルには記載する必要がありません。ということは、dev_dependencies
に入れた方が良さそうですね!!!
freezed
は、freezedは、FlutterでImmutableなクラスを扱うのに便利なPackageです。このPackageを使うときによく確認してもらいたいのですが、dartファイルにコードを書いていて、freezedを使うときは、このように記載します。
import 'package:freezed_annotation/freezed_annotation.dart';
part 'example.freezed.dart';
@freezed
class Example with _$Example {
const factory Example(String name, int age) = _Example;
}
この場合は、importにfreezed_annotation
を記載するので、この場合は、dev_dependencies
に入れた方が良さそうです。
では答え合わせです。
pubspec.yamlの記載例を見る
name: sample_app #自分が作成したアプリの名前
description: A new Flutter project.
publish_to: 'none'
version: 1.0.0+1
environment:
sdk: '>=2.18.4 <3.0.0'
dependencies:
flutter:
sdk: flutter
cupertino_icons: ^1.0.2
flutter_rating_bar: ^4.0.1
#ここに追加する
freezed_annotation: ^2.2.0
dev_dependencies:
flutter_test:
sdk: flutter
flutter_lints: ^2.0.0
#ここに追加する
build_runner: ^2.3.2
freezed: ^2.2.1
flutter:
uses-material-design: true
最後に
どうだったでしょうか?理解力は増しましたか?まだわかんないよと思う方もいるでしょう。まずはこのPackageはlib/
以降のファイルに書く必要があるのかを考えるととてもわかりやすくなると思います。
また、dart Packageのページに参考例があるのでそちらを参考にしてもいいかもしれないですね。
参考文献
参考例で使用したPackage
rating_bar