文章目录

  • 一丶 库
  • 二丶 导入自己本地库
  • 三丶 导入系统内置库 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篇: 库 自定义库、系统库、第三方库相关推荐

  1. Python基础:标准库和常用的第三方库

    目录 Python的标准库 Python常用的第三方库 标准库用法参考示例 datetime库: zlib库: sys库: urllib: Python的标准库 名称 作用 datetime 为日期和 ...

  2. 【Linux】动态库与静态库,如何打包库,如何使用第三方库

    文章目录 回顾基础 学会打包自己的库并使用 静态库 打包库 第三方库的使用 动态库 打包库 第三方库的使用 动态库加载以及周边问题 回顾基础 这篇文章主要对动静态库进行进一步的学习,关于动静态库的一些 ...

  3. python第三方库安装方法-Python第三方库安装

    Python有一个全球社区:https://pypi.org/,在这里我们可以搜索任何主题的Python第三方库.PyPI全称是Python Package Index,指的是Python包的索引,它 ...

  4. python语音识别的第三方库_python标准库+内置函数+第三方库: 7.音频处理

    python标准库+内置函数+第三方库 欲善其事,必先利其器 这其器必是python的标准库+内置函数,话说许多第三方库, 也是对标准库的使用,进行封装,使得使用起来更方便. 这些库以使用场景来分类: ...

  5. ios framework 调用第三方 framework_Python基础:标准库和常用的第三方库

    Python的标准库有: 名称 作用 datetime 为日期和时间处理同时提供了简单和复杂的方法. zlib 直接支持通用的数据打包和压缩格式:zlib,gzip,bz2,zipfile,以及 ta ...

  6. qpython3安装第三方库_【工具篇】python pip安装第三方库

    python安装第三方库其实挺简单的, 一句话总结:pip install 库名 (如pip install jieba 安装结巴库) 但会有一些安装的细节, 本文将详细展开如何pip安装第三方库的详 ...

  7. 引入三方库_关于使用第三方库、代码复用的一些思考

    选择 优质文章,及时送达 作者:xybaby 链接:cnblogs.com/xybaby/p/11372846.html 正文 不管是不要重复造轮子,还是站在巨人的肩膀上,对于软件开发来说,代码复用都 ...

  8. python第三方库numpy-Python中的第三方库——Numpy

    这里快速学习一下Python 中一个非常重要的第三方库 NumPy. 它不仅是 Python 中使用最多的第三方库,而且还是 SciPy.Pandas 等数据科学的基础库.它所提供的数据结构比 Pyt ...

  9. python修改第三方库重写_python安装第三方库时的一些bug 镜像源修改

    前序 飘得太久的,今天终于下定决心开始继续学习了,第一步:打开我的PyCharm,第二部:安装库 报错 o(╥﹏╥)o我太难了 D:\PyCharm_Project>`pip install p ...

  10. [转载] 20个常用Python库及200个第三方库

    参考链接: 使用Python在Linux Terminal中格式化文本 Requests.Kenneth Reitz写的最富盛名的http库.每个Python程序员都应该有它 Scrapy 如果你从事 ...

最新文章

  1. 形象标识 新松机器人_东莞市81个乡村振兴重点项目集中启用,树立统一标识牌302块...
  2. 下载python步骤_下载及安装Python详细步骤
  3. 企业SAP的二次开发管理之路
  4. Python中一些高效的数据操作
  5. YbtOJ#943-平方约数【莫比乌斯反演,平衡规划】
  6. 属性加密测试用例相关问题的分析
  7. mysql的存储过程放在哪里_mysql存储过程求解,错误在哪里?
  8. [转载] $CF290F$ 题解
  9. 搭建Web站点和FTP站点
  10. Fix Bug的五个阶段
  11. 驱动人生病毒清除教程
  12. acer软件保护卡怎么解除_Acer软件保护卡使用说明全解.doc
  13. rabbitmq 消息确认机制ACK
  14. 【已解决】Win 10 切换程序时,默认输入法始终为英文,抓狂,解决办法
  15. android 播放资源mp4,Android播放assets文件里视频文件相关问题分析
  16. 【愚公系列】2022年10月 基于WPF的智能制造MES系统框架-简介
  17. 六、Linux常用命令之压缩打包篇(gzip、gunzip、tar、zip、bzip2)
  18. Chrome —— 必备插件
  19. ipad/iphone的浏览器,为啥可以播放优酷土豆等在线视频
  20. 常用英语口语句型100句

热门文章

  1. Vue.nextTick DOM 更新循环结束之后执行延迟回调
  2. 什么?云数据库也能C位出道?
  3. Spring AOP失效之谜
  4. swift项目第七天:构建访客界面以及监听按钮点击
  5. jQuery.callbacks 注释
  6. [bzoj3217]ALOEXT
  7. 2008中国最佳寓言
  8. 《Windows via C/C++》学习笔记 —— 用户模式的“线程同步”之“条件变量”
  9. (论坛答疑点滴)怎么给Table动态添加控件并且得到控件的值?
  10. ExtraPhrase:一种针对抽象式(生成式)摘要的数据增强方法