该系列教程主要是为有一定语言基础 C/C++的程序员,快速学习一门新语言所采用的方法,属于在C/C++基础上扩展新语言的模式。
引入代码如下所示:
import 'xxx.dart'; //自定义库引入,xxx为本地路径
import 'dart:async'; //系统库引入
一般从官方网站:Page 1 | Top packages中 搜索需要的第三方库,打开项目中的配置文件,名为:pubspec.yaml,找到dependencies选项,这里以ffi库引入为例,搜索到后点进去,进入installing 选项下,对应的dependencies配置添加到本地中,配置文件参考如下:
dependencies:
ffi: ^2.0.2
之后执行pub get 命令获取该第三方库到本地。接下来就可以引入使用了,参考example编写,代码如下所示:
import 'dart:ffi'; //引入的第三方库头文件
import 'package:ffi/ffi.dart';//引入的第三方库头文件
//该部分来自三方库ffi的example demo
void main() {
// Allocate and free some native memory with calloc and free.
final pointer = calloc();
pointer.value = 3;
print(pointer.value);
calloc.free(pointer);
// Use the Utf8 helper to encode zero-terminated UTF-8 strings in native memory.
final String myString = '';
final Pointer charPointer = myString.toNativeUtf8();
print('First byte is: ${charPointer.cast().value}');
print(charPointer.toDartString());
calloc.free(charPointer);
}
如果我们引用了两个库文件,demo1.dart和demo2.dart,这两个库文件中都有对exec类的定义,那么直接使用exec方法肯定会报错,如下所示:
import 'package:dart_demo/demo1.dart';
import 'package:dart_demo/demo2.dart';
main() {
//报错,因为清楚调用的是哪一个库文件里定义的Exec类
Exec e = new Exec();
}
C++是使用namespace命名空间来解决,实际上Dart中也使用类似的思想来解决该问题,那就是as关键字给引用到的库重命名,参考如下:
import 'package:dart_demo/demo1.dart';
import 'package:dart_demo/demo2.dart' as lib;
main() {
Exec e = new Exec(); //demo1中Exec
lib.Exec e = new lib.Exec(); //demo2中Exec
}
这里的导入分两种方式,一种是通过关键字show引入部分可用方法,一种是通过hide关键字隐藏不可用方法,代码参考如下:
//表示只可以使用demo1.dart库文件中的fun1()方法
import 'demo1.dart' show fun1;
//表示不可以使用demo2.dart库文件中的fun2()方法
import 'demo2.dart' hide fun2;