dart/flutter仓库
官方仓库:pub.dev/
Flutter 包管理器
Flutter包管理器是Yanr。Flutter项目默认的配置文件是pubspec.yaml。
将yanr默认仓库设置为国内镜像地址
新增环境变量
setx PUB_HOSTED_URL "https://pub.flutter-io.cn"
setx FLUTTER_STORAGE_BASE_URL "https://storage.flutter-io.cn"
setx PUB_CACHE "E:\PUB_CACHE"
pubspec.yaml文件说明
# 应用或包名称
name: flutter_demo
# 应用或包的描述、简介
description: A new Flutter project.
# 应用或包的版本号
version: 1.0.0
# 生产环境依赖的工具包
dependencies:
flutter:
sdk: flutter
# 开发环境依赖的工具包
dev_dependencies:
flutter_test:
sdk: flutter
# flutter相关的配置选项
flutter:
# 配置静态文件
assets:
- images/a_dot_burr.jpeg
- images/a_dot_ham.jpeg
# 配置字体文件
fonts:
- family: Schyler
fonts:
- asset: fonts/Schyler-Regular.ttf
- asset: fonts/Schyler-Italic.ttf
style: italic
获取包
dart pub get <具体的包>
如: dart pub get dio
从包中导入库
使用 package: 前缀,导入包中的库:
import 'package:js/js.dart' as js;
import 'package:intl/intl.dart';
资源管理
flutter资源主要包括静态数据(例如JSON文件)、图标和图片(JPEG,WebP,GIF,动画WebP / GIF,PNG,BMP和WBMP)等。每个asset都通过相对于pubspec.yaml文件所在位置的进行配置。如上所述的image图片、font字体等。
配置图片资源
pubspec.yaml flutter 配置环境下,可配置静态文件目录或者文件名
assets:
- images/tabbar // 可以直接配置静态资源文件目录
- images/image.png // 也可以配置图片名
使用资源图片资源
Center(
child: Image.asset(
'images/image.png',
width: 350,
height: 335,
),
),
配置全局字体资源
- 下载字体资源包,存放在程序主目录/fonts 文件夹(存放目录可以是任何位置,需要在pubspec.yaml 配置正确的目录地址)
- 在pubspec.yaml flutter 配置环境下,配置静态文件目录或者文件名
fonts:
- family: Avenir
fonts:
- asset: fonts/Avenir/Avenir.ttf // 配置正确的字体存放路径
weight: 900
- 在main.dart 中定义全局字体配置
MaterialApp(
theme: ThemeData(fontFamily: 'Avenir'),
debugShowCheckedModeBanner: false,
),
);
配置完成后,你程序中的默认字体就是你所下载的字体文件了
Flutter package包依赖的四种方法
pub.dev
这是是最常见也是最方便的方法,但是只适用于发布到pub.dev平台的包,直接配置包名和版本号(可选)即可
dependencies:
collection: '^0.1.2'
Hosted
除了把package发布到pub.dev,我们还可以选择发布到私有的Dart托管仓库
私有托管仓库的依赖配置如下
dependencies:
plugin1:
hosted:
name: plugin1
url: http://your-package-server.com
version: ^1.4.0
Git
对于托管在git上的package项目也可以直接依赖
如下配置表示该项目位于git仓库的根目录路径上
dependencies:
plugin1:
git:
url: git://github.com/flutter/plugin1.git
如上配置默认认为package项目位于仓库的根目录上,若不是,需用path:配置指出具体的子目录
dependencies:
package1:
git:
url: git://github.com/flutter/packages.git
path: packages/package1
也可以通过ref指定依赖某个提交的版本、分支或者tag
dependencies:
package1:
git:
url: git://github.com/flutter/packages.git
ref: some-branch
path
若开发的包未上传到pub.dev也未上传到git也没关系,可以通过文件路径直接引用
绝对路径引用
dependencies:
plugin1:
path: D:/plugins/plugin1
相对路径引用
dependencies:
plugin1:
path: ../plugins/plugin1
库的引入
dart中,任意一个文件都会被认为是一个库,尽管其中可能并没有library标签,dart库目前的引入方式大致有三种:
引入dart语言的内置库
import 'dart:math';
引入内置库时,在使用的uri中以dart:开头
引入pub包管理器提供库
import 'package:flutter/material.dart';
在引用包管理器提供的库时,uri中以package开头
引入本地文件
import './tools/network.dart';
引用本地文件时,uri字符串中直接填写文件的相对路径。
指定库的别名
两个库中如果存在相同的标识符,在使用时很有可能会产生冲突;或者在引入一个库的内容的时候,由于当前文件引入的库比较多,导致使用IDE工具提供的标识符名称联想时,很有可能出现一些本不是我们想要选取,但是首字母相近的内容,影响编码效率,为此我们可以使用给库指定别名的方法,来规避以上问题。
import 'package:socket_io_client/socket_io_client.dart' as IO;
class MySocketIO {
IO.Socket mySocket;
MySocketIO(this.mySocket);
}
只引入库的部分内容
如果只想引入库的部分内容,可以使用如下语法:
// Import only foo.
import 'package:lib1/lib1.dart' show foo;
如果想屏蔽库中的某些内容,不引入这部分:
// Import all names EXCEPT foo.
import 'package:lib2/lib2.dart' hide foo;
参考资料
flutter 文件与库的引用导出(import、import as、import show、part、part of、library) - 掘金 (juejin.cn)
Flutter 第五课 --- 包管理器和资源管理 - 掘金 (juejin.cn)