文章目錄
- 1 庫-使用核心庫
- 2 庫-載入第三方庫
- 3 庫-載入檔案
- 4 庫-指定庫字首
- 5 庫-選擇性載入
- 6 庫-延遲載入
- 7 庫-自定義庫
1 庫-使用核心庫
使用import關鍵字來載入庫:
import "dart:math";
void main() {
print(sqrt(4));//開平方 2.0
}
2 庫-載入第三方庫
https://pub.flutter-io.cn/
1.編寫pubspec.yaml:
dependencies:
flutter:
sdk: flutter
cupertino_icons: ^0.1.0
dio: ^2.1.0
2.調用
import "package:dio/dio.dart";
void main() {
getHttp();
}
void getHttp() async {
try {
Response response = await Dio().get("https://www.baidu.com");
print(response);
} catch (e) {
print(e);
}
}
3 庫-載入檔案
建立一個mylib1.dart
class MyLib {
String name;
static MyLib _cache; //工廠構造函數無法通路 this。是以這裡要靜态的
factory MyLib([String name = 'singleton']) =>
MyLib._cache ??= MyLib._newObject(name);
//定義一個命名構造函數用來生産執行個體
MyLib._newObject(this.name);
}
class Test {
void test() => print('Test');
}
test(){
}
//載入檔案
import “mylib1.dart";
void main() {
var myLib1 = MyLib();
}
4 庫-指定庫字首
如果兩個庫有沖突的辨別符,可以為其中一個或兩個庫都指定字首:
mylib1.dart
class MyLib {
String name;
static MyLib _cache; //工廠構造函數無法通路 this。是以這裡要靜态的
factory MyLib([String name = 'singleton']) =>
MyLib._cache ??= MyLib._newObject(name);
//定義一個命名構造函數用來生産執行個體
MyLib._newObject(this.name);
}
class Test {
void test() => print('Test');
}
test(){
}
mylib2.dart
class MyLib{
String name;
static MyLib _cache; //工廠構造函數無法通路 this。是以這裡要靜态的
factory MyLib([String name = 'singleton']) =>
MyLib._cache ??= MyLib._newObject(name);
//定義一個命名構造函數用來生産執行個體
MyLib._newObject(this.name);
}
class Test{
void test() => print('Test');
}
載入檔案
import 'mylib1.dart' as lib1; //載入檔案
import 'mylib2.dart' as lib2; //如果兩個庫有沖突的辨別符,可以為其中一個或兩個庫都指定字首
void main() {
var myLib = lib1.MyLib();
var myLib2 = lib2.MyLib();
}
5 庫-選擇性載入
- show-隻載入庫的某些部分
- hide-篩選掉庫的某些部分
import 'mylib1.dart' as lib1 show Test; //隻載入庫的某些部分
import 'mylib2.dart' as lib2 hide Test; //篩選掉庫的某些部分
void main(){
//選擇性載入
var test = lib1.Test();
var lib = lib2.MyLib();
}
6 庫-延遲載入
- 使用deferred as導入
- 使用辨別符調用loadLibrary()加載庫
import 'mylib1.dart' deferred as lazyLib; //延遲載入
void main(){
//延遲載入
lazyLoad();
}
//延遲載入
//可提高程式啟動速度
//用在不常使用的功能
//用在載入時間過長的包
lazyLoad() async {
await lazyLib.loadLibrary();
var t = lazyLib.Test();
t.test();
}
7 庫-自定義庫
建立util.dart
part of mylib;
void printUtil() => print('util');
建立tool.dart
part of mylib;
void printTool() => print('tool');
建立mylib.dart
library mylib;
part 'util.dart';
part 'tool.dart';
void printMyLib() => print('mylib');
import 'mylib/mylib.dart';//載入自定義庫
void main(){
//載入自定義庫
printMyLib();
printUtil();
printTool();
}
列印:
mylib
util
tool