在 Dart 中,每一個 *.dart 的檔案,都可以被其他檔案匯入 (import) 進來。無論是自己寫的程式碼,還是第三方的程式庫,都可以用關鍵字 import 來匯入。
root directory --- lib --- lib_workshop.dart
                |
                -- pubspec.yaml 
lib 目錄底下,如範例中的 lib_workshop.dart。放在該目錄中,就可以被使用關鍵字 import 匯入使用。例如:
import 'package:[packagename]/lib_workshop.dart';
pubspec.yaml 是用來定義程式相關的設定,是 YAML 的格式,需注意空格。範例如下:
name: lib_workshop
description: A starting point for Dart libraries or applications.
# version: 1.0.0
# homepage: https://www.example.com
environment:
  sdk: '>=2.8.1 <3.0.0'
#dependencies:
#  path: ^1.7.0
dev_dependencies:
  pedantic: ^1.9.0
  test: ^1.14.4
參考:https://dart.dev/tools/pub/pubspec
將上方的架構修改為
root directory --- lib --- lib_workshop.dart
                |       |
                |       -- src --- lib_workshop_base.dart 
                |
                -- pubspec.yaml 
                |
                -- example --- lib_workshop_example.dart
在 lib 目錄下,建立我們需要的檔案結構,例如 lib\src 。
class Sample {
	bool get isGood => true;
}
export 將其他的程式庫包含在此檔案裡面。export lib_workshop_base.dart;
我們在 example\lib_workshop_example.dart 檔案中可以用將 lib_workshop.dart 匯入,就會連 lib_workshop_base.dart 一起匯入進來。
若在 lib 資料夾裡面有很多程式庫,那麼外面要匯入時,就只需要匯入一隻檔案,在這隻 *.dart 檔案中用關鍵字 export 包含在內的檔案就可以一併匯入,減少 import 的使用數量,也可以將程式庫做一個整理。
除了我們自己寫的程式庫外,外部的程式庫也可以使用 import 匯入。
例如:為了在 lib_workshop_example.dart 處理 JSON 我們可以用 import 匯入  'dart:convert';
import 'dart:convert';
void main() {
  var json = {
    'name':'foo',
    'value':'bar'
  };
  var jsonMap = jsonEncode(json);
  print(json['name']);
}
//foo
若在 src 底下新增一個程式庫 (lib_workshop_base2.dart)
root directory --- lib --- lib_workshop.dart
                |       |
                |       -- src --- lib_workshop_base.dart 
                |               |_ lib_workshop_base2.dart
                |
                -- pubspec.yaml 
                |
                -- example --- lib_workshop_example.dart
//lib_workshop_base2.dart
class Sample {
	bool get isGood => false;
}
我們嘗試在 lib_workshop.dart export lib_workshop_base2.dart
export lib_workshop_base.dart;
export lib_workshop_base2.dart; //Compiliation-error
export 包含的程式庫裡,若有包含相同的類別名稱,會出現編譯錯誤,必須要將該 export 移除,或將同名的類別更名。若直接在 lib_workshop_example.dart  import 呢?
import 'package:dart_3/dart_2.dart';
import 'package:dart_3/src/dart_2_base_2.dart';
void main() {
  var sample = Sample(); //Compiliation-error
  print('sample: ${sample.isGood}');
}
as 將 import 的程式庫加上前綴字,如此就可以使用前綴字加上類別名稱,避免衝突。import 'package:dart_3/dart_2.dart';
import 'package:dart_3/src/dart_2_base_2.dart' as sample2;
void main() {
  var sample = Sample(); 
  print('sample: ${sample.isGood}');
	var sample2 = sample2.Sample(); 
  print('sample2: ${sample2.isGood}');
}
//sample: true
//sample2: false
在 Dart 中,每一個 *.dart 的檔案,並不一定包含一個類別,可能有多個組成。
例如:在 lib_workshop_base.dart 中,除了 Sample 類別外,還有一個類別名為 Hello
//lib_workshop_base.dart
class Sample {
	bool get isGood => true;
}
class Hello{
  void greeting(){
		print('Hello');
	}
}
若在其他的程式庫匯入 lib_workshop_base.dart 則兩個類別都能使用。
import 'package:[package_name]/srclib_workshop_base.dart'
void main{
	var sample = Sample();
	var hello = Hello();
}
hide:將不需要被匯入的類別隱藏起來。import 'package:[package_name]/srclib_workshop_base.dart' hide Hello
void main{
	var sample = Sample();
	var hello = Hello(); //Compiliation-error
}
show:只顯示某類別。import 'package:[package_name]/src/lib_workshop_base.dart' show Hello
void main{
	var sample = Sample(); //Compiliation-error
	var hello = Hello(); 
}
當我們在 lib 資料夾中建立好我們的檔案之後,其他的程式碼就可以使用 import 來將類別匯入,如此,我們就可以在不同的檔案中沿用相同的類別,達到共用程式碼,以消除重複。
除了匯入自身的程式之外,還可以透過 pubspec.yaml 來加入外部的 package,接者同樣使用 import 來將 package 匯入。
若是同一個類別有很多檔案,我們可以新增一個檔案,該檔案專門使用 export 將相關類別的檔案包含在內,外部要使用則只需要 import 一個檔案即可。
用 import 匯入函式庫時,若我們不想要將該檔案中所有類別皆匯入,我們可以使用 hide 或是 show 來將不需匯入的類別排除。
最後,如果同一檔案匯入的檔案中有相同的類別名稱,可以使用 as 來將該類別加上前綴字,避免類別名稱衝突的情況發生。