👨‍💻

【Flutter】importとpart/part ofの違い

2024/10/06に公開

この記事ではFlutterの基本出来な文法であるimportとpart/part ofの違いについて説明します。

現場ででFlutterを使用しなければいけたいため、flutterをインプットしておりますので、Flutter初学者の方はぜひ参考にしていただけると幸いです。

importとは

他の言語経験者であれば大体予想がつくと思われますが、importは他のファイルやパッケージ内のコードを再利用(インポート)するためのものです。

基本文法

main.dart
 // 同じディレクトリにあるsub.dartファイルをインポート
import 'sub.dart' 
//パッケージをインポートする場合は'package:パッケージ名/パッケージファイル.dart';
import 'package:main_package/main_package.dart' 

部分的なインポート

特定のクラスや関数をインポートする場合

main.dart
 // import 'ファイル名.dart' show クラス名, 関数名;
import 'sub.dart' show ShowUser;

ライブラリ名のエイリアスをつける

異なるライブラリやファイルで同じ名前のクラスや関数が定義されている場合、asを使用することで別名(エイリアス)をつけることができる

main.dart
import 'package:main_package/main_package.dart' as lib;
import 'package:sub_package/sub_package.dart' as sub_lib;

//クラスや関数を呼び出すとき,lib
lib.MainClass instance = lib.MainClass()
sub_lib.MainClass instance = lib.MainClass()

このようにすることにより、同じ名前が衝突するのを防ぐことができます。

part/part of について

partとpart ofは、一つのライブラリやファイルを複数のファイルに分割して管理するために使用されます。
これは、コードをモジュール化して、異なるファイルに分割するために使用しますが、importと違う部分は同じライブラリ内のコードをファイル間で分けるために使用します。
partを使うことで、1つの大きなファイルを複数の小さなファイルに分割し、それらが1つの「ライブラリ」の一部であることを示すことができます。

基本文法

  • メインファイル
    ライブラリのファイルを分割する上での起源となるファイルです。
main.dart
library main_library;  // ライブラリの宣言

// パートファイルの指定(複数可)
part 'sub.dart';
part 'children.dart';
  • partファイル
    partで指定されたファイル('sub.dart'、'children.dart')ではpart ofを使用して、このファイルがどのファイルの一部かを指定します。
sub.dart
part of main_library;  // メインファイルで定義されたライブラリの一部であることを示す

class SubClass {
  void doSomething() {
    print('Doing something from sub_file.dart');
  }
}

このように、パートファイルはメインファイルと同じライブラリ内の一部として扱われ、メインファイルで宣言された変数や関数に直接アクセスできます。

まとめ

  • import: 別々のライブラリやパッケージをファイル間で共有する際に使用します。importしたファイルはそれぞれ独立したライブラリであり、名前空間が異なります。
  • part/part of: 1つのライブラリ(メインファイル)を複数のファイルに分割する際に使用します。partで参照されるファイルは、メインファイルと同じライブラリとして扱われ、名前空間が共有されます。

Discussion