一统天下 flutter - dart: 库的开发和使用
一统天下 flutter - dart: 库的开发和使用
示例如下:
lib\dart\package\demo.dart
/*
* dart 库的开发和使用(import, export)
*
* import 用于从其他 .dart 文件中导入(_ 开头的是私有的不会被导入,非 _ 开头的会被导入)
* export 用于在一个 .dart 文件中定义需要导出的其他多个 .dart 文件,这样你只用 import 这一个 .dart 文件即可导入此文件中定义的多个 .dart 文件
* part, part of, library 用于将多个文件合并为一个文件
*
* 注:目录名、文件名以及导入时定义的前缀建议用 snake_case 规范命名(避免不同文件系统是否区分大小写的问题),比如 import 'aaa_bbb_ccc.dart' as xxx_yyy_zzz;
*/
import 'package:flutter/material.dart';
import 'package:flutter_demo/helper.dart';
import 'lib1.dart'; // lib1.dart 中定义的非 _ 开头的类或函数等都会被导入
import 'lib2.dart' as lib2; // 通过前缀 lib2. 调用 lib2.dart 中的的非 _ 开头的类或函数等
import 'lib3.dart' show lib3_f1, lib3_f2; // 只导入 lib3.dart 的 lib3_f1, lib3_f2 其他都不导入
import 'lib4.dart' hide lib4_f1, lib4_f2; // lib4.dart 中定义的非 _ 开头的类或函数等都会被导入,但是不包括 lib4_f1, lib4_f2
import 'mylib.dart'; // 导入 mylib.dart 中的 export 内容
import 'mylib2.dart'; // 导入 mylib2.dart(通过 part, part of 定义)
import 'mylib3.dart'; // 导入 mylib3.dart(通过 part, part of, library 定义)
// 引用 dart 语言的内置库的方式
// import 'dart:math';
// 引用 pub 包提供的库的方式
// import 'package:flutter/material.dart';
// import 'package:path_provider/path_provider.dart';
// 引用本地文件的方式
// import './lib1.dart';
class DartPackage extends StatelessWidget {
const DartPackage({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
sample1();
return const MyWidget(text: "dart_package_demo");
}
void sample1() {
lib1_f1();
// _lib1_f2(); // _ 开头的无法导入
lib2.lib2_f1(); // 因为通过 as lib2 导入,所以需要通过前缀 lib2. 访问
lib3_f1();
lib3_f2();
// lib3_f3(); // 不在 import 的 show 里,所以无法访问
// lib4_f1(); // 在 import 的 hide 里,所以无法访问
// lib4_f2(); // 在 import 的 hide 里,所以无法访问
lib4_f3();
lib5_f1();
lib5_f2();
lib5_f3();
lib6_f1();
// lib6_f2(); // 不在 export 的 show 里,所以无法访问
// lib6_f3(); // 不在 export 的 show 里,所以无法访问
// lib7_f1(); // 在 export 的 hide 里,所以无法访问
lib7_f2();
lib7_f3();
mylib_f1();
lib8_f1();
lib9_f1();
mylib2_f1();
lib10_f1();
lib11_f1();
mylib3_f1();
}
}
lib\dart\package\lib1.dart
import 'package:flutter_demo/helper.dart';
void lib1_f1() {
log("lib1_f1");
}
void _lib1_f2() {
log("lib1_f2");
}
lib\dart\package\lib2.dart
import 'package:flutter_demo/helper.dart';
void lib2_f1() {
log("lib2_f1");
}
lib\dart\package\lib3.dart
import 'package:flutter_demo/helper.dart';
void lib3_f1() {
log("lib3_f1");
}
void lib3_f2() {
log("lib3_f2");
}
void lib3_f3() {
log("lib3_f3");
}
lib\dart\package\lib4.dart
import 'package:flutter_demo/helper.dart';
void lib4_f1() {
log("lib4_f1");
}
void lib4_f2() {
log("lib4_f2");
}
void lib4_f3() {
log("lib4_f3");
}
lib\dart\package\lib5.dart
import 'package:flutter_demo/helper.dart';
void lib5_f1() {
log("lib5_f1");
}
void lib5_f2() {
log("lib5_f2");
}
void lib5_f3() {
log("lib5_f3");
}
lib\dart\package\lib6.dart
import 'package:flutter_demo/helper.dart';
void lib6_f1() {
log("lib6_f1");
}
void lib6_f2() {
log("lib6_f2");
}
void lib6_f3() {
log("lib6_f3");
}
lib\dart\package\lib7.dart
import 'package:flutter_demo/helper.dart';
void lib7_f1() {
log("lib7_f1");
}
void lib7_f2() {
log("lib7_f2");
}
void lib7_f3() {
log("lib7_f3");
}
lib\dart\package\lib8.dart
// lib8.dart 是 mylib2.dart 文件的一部分
part of 'mylib2.dart';
void lib8_f1() {
log("lib8_f1");
}
lib\dart\package\lib9.dart
// lib9.dart 是 mylib2.dart 文件的一部分
part of 'mylib2.dart';
void lib9_f1() {
log("lib9_f1");
}
lib\dart\package\lib10.dart
// lib10.dart 是 library mylib3 的一部分
part of mylib3;
void lib10_f1() {
log("lib10_f1");
}
lib\dart\package\lib11.dart
// lib11.dart 是 library mylib3 的一部分
part of mylib3;
void lib11_f1() {
log("lib11_f1");
}
lib\dart\package\mylib.dart
import 'package:flutter_demo/helper.dart';
// mylib.dart 被其他文件 import 后,这里的 export 的文件也会被自动 import
export 'lib5.dart';
export 'lib6.dart' show lib6_f1; // export 支持 show(用法和 import 的一样)
export 'lib7.dart' hide lib7_f1; // export 支持 hide(用法和 import 的一样)
void mylib_f1() {
log("mylib_f1");
}
lib\dart\package\mylib2.dart
import 'package:flutter_demo/helper.dart';
// mylib2.dart 是主文件,这个文件会自动将 lib8.dart, lib9.dart 合并进来
part 'lib8.dart'; // lib8.dart 需要在文件的顶部使用 part of
part 'lib9.dart'; // lib9.dart 需要在文件的顶部使用 part of
void mylib2_f1() {
log("mylib2_f1");
}
lib\dart\package\mylib3.dart
// 当前的库名为 mylib3(要与当前文件的文件名 mylib3.dart 一致)
// 这样,需要被合并进来的文件在文件的顶部声明 part of mylib3; 即可
library mylib3;
import 'package:flutter_demo/helper.dart';
// mylib3.dart 是主文件,这个文件会自动将 lib10.dart, lib11.dart 合并进来
part 'lib10.dart'; // lib10.dart 需要在文件的顶部使用 part of
part 'lib11.dart'; // lib11.dart 需要在文件的顶部使用 part of
void mylib3_f1() {
log("mylib3_f1");
}