挨拶
どうも、ぺんまるです。
最近はジムでのトレーニングをはじめました。
ただ、いまだにフリーウェイトのマッチョたちが怖いです。
徐々にラックの世界へ踏み入れようと日々奮闘しています。
importとpartってなに?
今回記事を執筆した理由は携わっているプロジェクトのファイルにpartとpart ofと書いてあったのでなんじゃこりゃと思い、調べた上で備忘録として執筆しました。
単純にいうと
import
publicなファイルのみの読み込み
part
publicおよびprivateなファイルの読み込み
という違いらしいです。
使う場面どこ?
freezedパッケージなどでよく見かける印象があります。
イミュータブルなデータクラスなどを用意するときに読み込む側がpart、読み込み先がpart ofの記述を行い、それぞれの相関を表しています。
これにより複数のファイル間でプライベートメンバを共有することができます。
part 'penmaru_posts.dart';
const _myPrivateValue = 'neko'
part of 'penmaru.dart';
void usePrivateValue () => print(_myPrivateValue);
上記のコードのように_myPrivateValueはプライベート変数です。
プライベート変数は外部ファイルおよび別のクラスからのアクセスが不可能になります。
ただpartとpart ofを使用すると、複数のファイル間でプライベートメンバを共有することができます。
ですので、usePrivateValue関数を使って_myPrivateValueをprint出力できます(printの使用は非推奨ですが…笑)
part 'component/penmaru.dart';
class Penmaru extends HookConsumerWidget {
const Penmaru({super.key});
// 以下省略
part of '../penmaru.dart';
class _PenmaruPosts extends HookConsumerWidget {
const _PenmaruPosts();
// 以下省略
また上記のコードのようにクラス名の接頭辞にアンダースコアをつけるとプライベートクラスになります。
今回はHookConsumerWidgetのウィジェットクラスをプライベートクラスにしました。
プライベートクラスにし、コンポーネントにすることで、使用されなくなった場合にエディタが警告してくれたり、リファクタリングが容易になります。
また、個人的には1ファイルでコードが長く書いてあるものより、複数ファイルにわけてコンポーネント化をしたほうが読みやすいなと思いました。
まだ、アプリ開発をはじめてから3ヶ月なので、これから設計・デザインなどを学習していきアプリの学習を頑張っていきたいと思います!!