LoginSignup
3
0

More than 1 year has passed since last update.

[Flutter]dependenciesとdev_dependenciesの違い

Last updated at Posted at 2022-12-18

こんにちわ いせきです。どんどん記事を書いてアウトプットしていっています!

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について

状態管理の説明は、また別の記事で記載していこうと思います。今回は、状態管理の一つのfreezedfreezed_annotationbuild_runnerを使ってみようと思います。

まずは、freezed_annotationから見ていきましょう。

freezed_annotationは、lib/のファイルに追加する必要があるため、みんな使えないといけませんね。そうなるとdependenciesに入れましょう。さっきと同じ考え方ですね。

次に残りのbuild_runnerfreezedを見てみましょう。

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

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0