前言
前几篇文章分别讲解了Dart中的变量、内置类型、函数(方法)、异常、类,对Dart的基本语法已经有了很多的了解,那么今天来说一下Dart中的泛型和库。前几篇文章没有看的,建议先看一下前几篇文章。
那些你不知道的Dart细节之变量
那些你不知道的Dart细节之内置类型
那些你不知道的Dart细节之函数(方法)
那些你不知道的Dart细节之操作符、流程控制语句、异常
那些你不知道的Dart细节之类的点点滴滴
那些你不知道的Dart细节之泛型和库
泛型
Java中的泛型信息是编译时的,泛型信息在运行时是不存在的
Dart的泛型类型是固化的,在运行时也有可以判断的具体类型
var names ListStringprintnames is ListString//true
printnames.runtimeType // ListString
在Java中,可以测试对象是否为List,但无法测试它是否是List。但是在Dart中是预编译的。
其他的泛型使用方法和Java中的类似,这里就不赘述了。
库-使用核心库
使用import关键字来载入库:
void
printsqrt//开平方
对于内置的库,URI 使用特殊的 dart: scheme。对于其他的库,你可以使用文件系统路径或者 package: scheme。
库-载入第三方库
在Flutter中想使用第三方库的话需要在pubspec.yaml中的dependencies中添加依赖:
dependencies: flutter:
sdk: flutter
cupertino_icons: ^0.1.0
dio: ^2.1.0
添加完成之后点击右上角的packages get进行导入依赖。下面是三方哭调用方法:
void
getHttp
void getHttp async
try
Response response await Dio.get
printresponse
catch e
printe
这里给大家一个网站,需要寻找第三方库的时候直接在里面搜索即可:https://pub.dev/
库-指定库前缀
在Java编码过程经常会出现一个类中调用两个类中相同名字的方法,这时就需要全限定名称来调用了,但是在Dart中是不需要的:
as lib1 as lib2
void
var myLib lib1.MyLib
var myLib2 lib2.MyLib
上面代码中MyLib1.dart 和 MyLib2.dart 都有一个名字为 MyLib 的类。
库-选择性载入
show-只载入库的某些部分
hide-筛选掉库的某些部分
as lib1 show Test as lib2 hide Test
var lib1.Test
var lib lib2.MyLib
如果只使用库的一部分功能,则可以选择需要导入的 内容。
库-延迟载入
使用deferred as导入
使用标识符调用loadLibrary()加载库
deferred as lazyLibvoid
lazyLoad
lazyLoad async
await lazyLib.loadLibrary
var t lazyLib.Test
t.test
使用 await 关键字暂停代码执行一直到库加载完成。可提高程序启动速度。用在不常使用的功能和载入时间过长的包。
库-自定义库
首先将一个文件作为library:
library mylibpart
part
void printMyLib print
然后使用part 把一个库分开到多个 Dart 文件中。
part of mylibvoid printTool print
part of mylibvoid printUtil print
import不会完全共享作用域,而part之间是完全共享的。如果说在A库中import了B库,B库import了C库,A库是没有办法直接使用C库的对象的。而B,C若是A的part,那么三者共享所有对象。并且包含所有导入。
void
printsqrt//开平方
0
总结
到这里为止Dart的第六篇文章完成。本篇文章主要讲解了一下Dart语言的泛型和库。下一篇文章讲解一下Dart中的异步操作,希望大家能够喜欢,对大家如果有帮助的话,欢迎点赞关注,如果有异议,可以留言进行讨论。
还没有评论,来说两句吧...