Flutter Dart语言(04)库操作

本文指导C/C++程序员通过自定义库、系统库和第三方库(如ffi)的学习与引入,介绍如何处理库冲突,以及使用局部导入和屏蔽来管理不同库中的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0 说明

该系列教程主要是为有一定语言基础 C/C++的程序员,快速学习一门新语言所采用的方法,属于在C/C++基础上扩展新语言的模式。

1 自定义库 & 系统自定义库

引入代码如下所示:

import 'xxx.dart';     //自定义库引入,xxx为本地路径
import 'dart:async';   //系统库引入

2 第三方库引入(Pub包管理系统)

一般从官方网站: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<Uint8>();
  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<Utf8> charPointer = myString.toNativeUtf8();
  print('First byte is: ${charPointer.cast<Uint8>().value}');
  print(charPointer.toDartString());
  calloc.free(charPointer);
}

3 库的冲突解决

如果我们引用了两个库文件,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
}

4 库的局部导入与局部屏蔽

这里的导入分两种方式,一种是通过关键字show引入部分可用方法,一种是通过hide关键字隐藏不可用方法,代码参考如下:

//表示只可以使用demo1.dart库文件中的fun1()方法
import 'demo1.dart'  show fun1;    

//表示不可以使用demo2.dart库文件中的fun2()方法 
import 'demo2.dart'  hide fun2;                

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

图王大胜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值