Dart基础第14篇: 库 自定义库、系统库、第三方库
文章目录
- 一丶 库
- 二丶 导入自己本地库
- 三丶 导入系统内置库 math库
- 四丶 导入系统内置库实现请求数据httpClient
- 五丶 关于 Async Await
- 六丶 导入Pub包管理系统中的库
- 七丶 库的重命名 Dart冲突解决
- 八丶 部分导入
- 九丶 延迟加载
一丶 库
前面介绍Dart基础知识的时候基本上都是在一个文件里面编写Dart代码的,但实际开发中不可能这么写,模块化很重要,所以这就需要使用到库的概念。
在Dart中,库的使用时通过import关键字引入的。
library指令可以创建一个库,每个Dart文件都是一个库,即使没有使用library指令来指定。
Dart中的库主要有三种:
1、我们自定义的库
import ‘lib/xxx.dart’;
2、系统内置库
import ‘dart:math’;
import ‘dart:io’;
import ‘dart:convert’;
3、Pub包管理系统中的库
https://pub.dev/packages
https://pub.flutter-io.cn/packages
https://pub.dartlang.org/flutter/
1、需要在自己想项目根目录新建一个pubspec.yaml
2、在pubspec.yaml文件 然后配置名称 、描述、依赖等信息
3、然后运行 pub get 获取包下载到本地
4、项目中引入库 import ‘package:http/http.dart’ as http; 看文档使用
二丶 导入自己本地库
Animal.dart
class Animal{String _name; //私有属性int age; //默认构造函数的简写Animal(this._name,this.age);void printInfo(){ print("${this._name}----${this.age}");}String getName(){ return this._name;} void _run(){print('这是一个私有方法');}execRun(){this._run(); //类里面方法的相互调用}
}
import 'lib/Animal.dart';
main(){var a=new Animal('小黑狗', 20);print(a.getName());
}
三丶 导入系统内置库 math库
// import 'dart:io';
import "dart:math";
main(){print(min(12,23));print(max(12,25));
}
四丶 导入系统内置库实现请求数据httpClient
import 'dart:io';
import 'dart:convert';void main() async{var result = await getDataFromZhihuAPI();print(result);
}//api接口: http://news-at.zhihu.com/api/3/stories/latest
getDataFromZhihuAPI() async{//1、创建HttpClient对象var httpClient = new HttpClient(); //2、创建Uri对象var uri = new Uri.http('news-at.zhihu.com','/api/3/stories/latest');//3、发起请求,等待请求var request = await httpClient.getUrl(uri);//4、关闭请求,等待响应var response = await request.close();//5、解码响应的内容return await response.transform(utf8.decoder).join();
}
五丶 关于 Async Await
async和await
这两个关键字的使用只需要记住两点:
只有async方法才能使用await关键字调用方法
如果调用别的async方法必须使用await关键字
async是让方法变成异步。
await是等待异步方法执行完成。
void main() async{var result = await testAsync();print(result);
}
//异步方法
testAsync() async{return 'Hello async';
}
六丶 导入Pub包管理系统中的库
pub包管理系统:
1、从下面网址找到要用的库
https://pub.dev/packages
https://pub.flutter-io.cn/packages
https://pub.dartlang.org/flutter/
2、创建一个pubspec.yaml文件,内容如下
name: xxx
description: A new flutter module project.
dependencies:
http: ^0.12.0+2
date_format: ^1.0.6
3、配置dependencies
4、运行pub get 获取远程库
5、看文档引入库使用
import 'dart:convert' as convert;
import 'package:http/http.dart' as http;
import 'package:date_format/date_format.dart';main() async {// var url = "http://www.phonegap100.com/appapi.php?a=getPortalList&catid=20&page=1";// // Await the http get response, then decode the json-formatted responce.// var response = await http.get(url);// if (response.statusCode == 200) {// var jsonResponse = convert.jsonDecode(response.body);// print(jsonResponse);// } else {// print("Request failed with status: ${response.statusCode}.");// }print(formatDate(DateTime(1989, 2, 21), [yyyy, '*', mm, '*', dd]));
}
七丶 库的重命名 Dart冲突解决
Person1.dart
class Person{String name;int age; //默认构造函数的简写Person(this.name,this.age); Person.setInfo(String name,int age){this.name=name;this.age=age;}void printInfo(){ print("Person1:${this.name}----${this.age}");}
}
Person2.dart
class Person{String name;int age; //默认构造函数的简写Person(this.name,this.age); Person.setInfo(String name,int age){this.name=name;this.age=age;}void printInfo(){ print("Person2:${this.name}----${this.age}");}
}
import 'lib/Person1.dart';
import 'lib/Person2.dart' as lib;main(List<String> args) {Person p1=new Person('张三', 20);p1.printInfo();lib.Person p2=new lib.Person('李四', 20);p2.printInfo();
}
八丶 部分导入
myMath.dart
void getName(){print('张三');
}
void getAge(){print(20);
}
void getSex(){print('男');
}
部分导入
如果只需要导入库的一部分,有两种模式:
模式一:只导入需要的部分,使用show关键字,如下例子所示:
import ‘package:lib1/lib1.dart’ show foo;
模式二:隐藏不需要的部分,使用hide关键字,如下例子所示:
import ‘package:lib2/lib2.dart’ hide foo;
import 'lib/myMath.dart' hide getName;void main(){// getName();getAge();
}
九丶 延迟加载
也称为懒加载,可以在需要的时候再进行加载。
懒加载的最大好处是可以减少APP的启动时间。懒加载使用deferred as关键字来指定,如下例子所示:import 'package:deferred/hello.dart' deferred as hello;当需要使用的时候,需要使用loadLibrary()方法来加载:greet() async {await hello.loadLibrary();hello.printGreeting();
}
Dart基础第14篇: 库 自定义库、系统库、第三方库相关推荐
- Python基础:标准库和常用的第三方库
目录 Python的标准库 Python常用的第三方库 标准库用法参考示例 datetime库: zlib库: sys库: urllib: Python的标准库 名称 作用 datetime 为日期和 ...
- 【Linux】动态库与静态库,如何打包库,如何使用第三方库
文章目录 回顾基础 学会打包自己的库并使用 静态库 打包库 第三方库的使用 动态库 打包库 第三方库的使用 动态库加载以及周边问题 回顾基础 这篇文章主要对动静态库进行进一步的学习,关于动静态库的一些 ...
- python第三方库安装方法-Python第三方库安装
Python有一个全球社区:https://pypi.org/,在这里我们可以搜索任何主题的Python第三方库.PyPI全称是Python Package Index,指的是Python包的索引,它 ...
- python语音识别的第三方库_python标准库+内置函数+第三方库: 7.音频处理
python标准库+内置函数+第三方库 欲善其事,必先利其器 这其器必是python的标准库+内置函数,话说许多第三方库, 也是对标准库的使用,进行封装,使得使用起来更方便. 这些库以使用场景来分类: ...
- ios framework 调用第三方 framework_Python基础:标准库和常用的第三方库
Python的标准库有: 名称 作用 datetime 为日期和时间处理同时提供了简单和复杂的方法. zlib 直接支持通用的数据打包和压缩格式:zlib,gzip,bz2,zipfile,以及 ta ...
- qpython3安装第三方库_【工具篇】python pip安装第三方库
python安装第三方库其实挺简单的, 一句话总结:pip install 库名 (如pip install jieba 安装结巴库) 但会有一些安装的细节, 本文将详细展开如何pip安装第三方库的详 ...
- 引入三方库_关于使用第三方库、代码复用的一些思考
选择 优质文章,及时送达 作者:xybaby 链接:cnblogs.com/xybaby/p/11372846.html 正文 不管是不要重复造轮子,还是站在巨人的肩膀上,对于软件开发来说,代码复用都 ...
- python第三方库numpy-Python中的第三方库——Numpy
这里快速学习一下Python 中一个非常重要的第三方库 NumPy. 它不仅是 Python 中使用最多的第三方库,而且还是 SciPy.Pandas 等数据科学的基础库.它所提供的数据结构比 Pyt ...
- python修改第三方库重写_python安装第三方库时的一些bug 镜像源修改
前序 飘得太久的,今天终于下定决心开始继续学习了,第一步:打开我的PyCharm,第二部:安装库 报错 o(╥﹏╥)o我太难了 D:\PyCharm_Project>`pip install p ...
- [转载] 20个常用Python库及200个第三方库
参考链接: 使用Python在Linux Terminal中格式化文本 Requests.Kenneth Reitz写的最富盛名的http库.每个Python程序员都应该有它 Scrapy 如果你从事 ...
最新文章
- 形象标识 新松机器人_东莞市81个乡村振兴重点项目集中启用,树立统一标识牌302块...
- 下载python步骤_下载及安装Python详细步骤
- 企业SAP的二次开发管理之路
- Python中一些高效的数据操作
- YbtOJ#943-平方约数【莫比乌斯反演,平衡规划】
- 属性加密测试用例相关问题的分析
- mysql的存储过程放在哪里_mysql存储过程求解,错误在哪里?
- [转载] $CF290F$ 题解
- 搭建Web站点和FTP站点
- Fix Bug的五个阶段
- 驱动人生病毒清除教程
- acer软件保护卡怎么解除_Acer软件保护卡使用说明全解.doc
- rabbitmq 消息确认机制ACK
- 【已解决】Win 10 切换程序时,默认输入法始终为英文,抓狂,解决办法
- android 播放资源mp4,Android播放assets文件里视频文件相关问题分析
- 【愚公系列】2022年10月 基于WPF的智能制造MES系统框架-简介
- 六、Linux常用命令之压缩打包篇(gzip、gunzip、tar、zip、bzip2)
- Chrome —— 必备插件
- ipad/iphone的浏览器,为啥可以播放优酷土豆等在线视频
- 常用英语口语句型100句
热门文章
- Vue.nextTick DOM 更新循环结束之后执行延迟回调
- 什么?云数据库也能C位出道?
- Spring AOP失效之谜
- swift项目第七天:构建访客界面以及监听按钮点击
- jQuery.callbacks 注释
- [bzoj3217]ALOEXT
- 2008中国最佳寓言
- 《Windows via C/C++》学习笔记 —— 用户模式的“线程同步”之“条件变量”
- (论坛答疑点滴)怎么给Table动态添加控件并且得到控件的值?
- ExtraPhrase:一种针对抽象式(生成式)摘要的数据增强方法