0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

importとpartとは

Last updated at Posted at 2024-07-23

挨拶

どうも、ぺんまるです。
最近はジムでのトレーニングをはじめました。
ただ、いまだにフリーウェイトのマッチョたちが怖いです。
徐々にラックの世界へ踏み入れようと日々奮闘しています。

importとpartってなに?

今回記事を執筆した理由は携わっているプロジェクトのファイルにpartとpart ofと書いてあったのでなんじゃこりゃと思い、調べた上で備忘録として執筆しました。
単純にいうと

import publicなファイルのみの読み込み
part publicおよびprivateなファイルの読み込み

という違いらしいです。

使う場面どこ?

freezedパッケージなどでよく見かける印象があります。
イミュータブルなデータクラスなどを用意するときに読み込む側がpart、読み込み先がpart ofの記述を行い、それぞれの相関を表しています。
これにより複数のファイル間でプライベートメンバを共有することができます。

penmaru.dart
part 'penmaru_posts.dart';
const _myPrivateValue = 'neko'
penmaru_posts.dart
part of 'penmaru.dart';
void usePrivateValue () => print(_myPrivateValue);

上記のコードのように_myPrivateValueはプライベート変数です。
プライベート変数は外部ファイルおよび別のクラスからのアクセスが不可能になります。
ただpartとpart ofを使用すると、複数のファイル間でプライベートメンバを共有することができます。
ですので、usePrivateValue関数を使って_myPrivateValueをprint出力できます(printの使用は非推奨ですが…笑)

penmaru.dart
part 'component/penmaru.dart';

class Penmaru extends HookConsumerWidget {
  const Penmaru({super.key});
  // 以下省略

pernmaru_posts.dart
part of '../penmaru.dart';

class _PenmaruPosts extends HookConsumerWidget {
  const _PenmaruPosts();
  // 以下省略

また上記のコードのようにクラス名の接頭辞にアンダースコアをつけるとプライベートクラスになります。
今回はHookConsumerWidgetのウィジェットクラスをプライベートクラスにしました。
プライベートクラスにし、コンポーネントにすることで、使用されなくなった場合にエディタが警告してくれたり、リファクタリングが容易になります。
また、個人的には1ファイルでコードが長く書いてあるものより、複数ファイルにわけてコンポーネント化をしたほうが読みやすいなと思いました。

まだ、アプリ開発をはじめてから3ヶ月なので、これから設計・デザインなどを学習していきアプリの学習を頑張っていきたいと思います!!

参考にさせていただいた記事さま

0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?