以下内容为自学笔记,若有幸被大神看到,望指正其不准,补充其不足。万分感谢!!!
一、Flutter中库的简介
在Dart语言中:所有的后缀名为.dart文件都是库包。
在Flutter工程中,lib包为根目录,package:项目名/此目录指定的就是lib包。
二、库的使用
Flutter中使用库,可以使用以下几种方式
import导入;
export重新导出库;
library声明库;
part和part of关联文件与库;
依赖第三方库。
1、import的使用
格式:import 库文件的路径.
当导入库在lib包目录下的lib1.dart时:
可以直接写库名:此时默认指向lib包内。
.
也可以写全路径:
当导入库在lib目录下自定义包src目录下的lib1.dart时:要定位到自定义包的位置
可以直接写库名:此时定位到lib包下自定义的src目录内。
.
也可以写全路径:
2、as 指定库前缀
概述:
当导入的不同库引发的冲突时,使用as指定库前缀用来解决;
当不同库内有相同的类,方法,成员变量,当其被使用时就会发生冲突。
注意事项:
as指定的库前缀,相当于C中的命名空间,使用时用前缀.要是有的对象。
当未指定的前缀的库内有成员(方法,变量,类)和本地文件相同时,此时本地的会覆盖导入的库内的成员,在本地调用时之后执行本地的成员。
使用方法:
//在导入路径后 + as +自定义前缀名称 as 自定义名称
//使用时,以前缀名称开始.调用,相当于c中的命名空间
lib1.dart
String libName void
print
class Person
String name
int age
void
print
lib2.dart
String libName void
print
class Person
String name
int age
void
print
此时lib1与lib2内的成员名都相同,都导入使用时,会报The name 'Person' is defined in the libraries 'lib1.dart' and 'lib2.dart'这个错误,此时导入要给一个库加一个前缀as,以lib1为例:
main.dart
0
3、show和hide操作库的部分
概述:
show 名称只导入库的这边代码,其余的隐藏(不导入);
hide 名称隐藏(不导入)这部分代码,其余的可见(已导入);
当想操作多个成员时,可用,分隔
使用方法:
1
main.dart
2
4、export重新导入库
概述:
当需要导入的库过多或者要从新整合库使用时,可以通过重新导入库者,把部分库或全部的库来组合或者重新打包库;
export中也有show和hide操作,但没有as库前缀;
使用export重新导入多个库时,各个库中有相同名称的成员(类,方法,变量)会发生冲突。
export重新导入的库相当于将库内代码复制到当前文件中,但在当前文件并不能使用。因为Dart语言不存在重载,所以会出现冲突。
部分冲突可以使用hide将冲突的部分隐藏来解决。
使用方法:
lib3.dart
3
lib4.dart
4
libs.dart
5
main.dart
5、library 声明库
使用library关键字直接给当前文件标记成库,
格式:一般在文件头部library 自定义名称
声明的库中内容可由下方式导入:
可使用export导入的,相当于复制进来,但当前库内引用不到,不过import引用当前库时可以使用。
也可使用part和part of来关联文件与库。part的优先级要高于import。当前库可以直接应用part中的内容。
libs.dart
7
lib5.dart
8
三、依赖第三方库
依赖方式:
在项目中pubspec.yaml文件内的dependencies:标签下添加依赖;
9
当添加完依赖后使用flutter packages get命令去下载包,或者工具上边pacages get按钮;
然后去pubspec.lock文件中查看导入依赖的兼容版本。
^version相当于>= version < big version
依赖方式还分为以下三种:
常规依赖:dependencies:此标签下依赖在调试和发版后都会生效
Dev依赖:dev_dependencies:此标签下的依赖均在调试时生效。
重写依赖:dependency_overrides:强制下载依赖包,不管是否兼容,不推荐使用。
还没有评论,来说两句吧...