库
库是一种模块化构建项目的方法,将代码分割到多个文件中, 用于共享代码或模块给其他开发人员
Flutter中库主要有三种:
- 自定义库
import 'lib/xxx.dart';
- 系统内置库
import 'dart:math';
import 'dart:io';
import 'dart:convert';
- Pub包管理的库
// pub.dev和中国镜像站
https://pub.dev
https://pub.flutter-io.cn
如何获取pub库
- 项目根目录新建一个
pubspec.yaml - 在pubspec.yaml中配置
名称 、描述、依赖等信息 - 运行 pub get 获取包下载到本地
- 项目中引入库 import 'package:http/http.dart' as http; 看文档说明
导入本地库
class Animal{
final String _name; //私有属性
int age;
//默认构造函数的简写
Animal(this._name,this.age);
void printInfo(){
print("$_name----$age");
}
String getName(){
return _name;
}
void _run(){
print('这是一个私有方法');
}
execRun(){
_run(); //类里面方法的相互调用
}
}
import 'Animal.dart'; // 引入自定义库
main(){
var animal = Animal('旺财', 5);
print(animal.getName());
}
导入系统内置库
import 'dart:io';
import 'dart:math';
void main() {
print(min(12,23));
print(max(12,25));
var file = File("test")
}
导入第三方库
/*
pub包管理系统:
1、从下面网址找到要用的库
https://pub.dev
https://pub.flutter-io.cn
2、创建一个pubspec.yaml文件,内容如下
name: xxx
description: A new flutter module project.
dependencies:
http: ^1.0.0
date_format: ^2.0.7
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';
void main() async {
var url = Uri.parse("http://www.baidu.com");
var response = await http.get(url);
if (response.statusCode == 200) {
print(response.body);
} else {
print("Request failed with status: ${response.statusCode}.");
}
}
Package
package 包含依赖关系 (在 pubspec.yaml 文件里声明)、 Dart 库、应用、资源、字体、测试、图片和例子等。 pub.dev 和 pub.flutter-io.cn 上列出了很多 package,由 Google 工程师和 Flutter 和 Dart 社区的开发者开发和发布。
Package 冲突解决
App中使用 some_package 和 other_package这两个包,依赖于不同版本的 url_launcher。于是便有了冲突。避免这种情况的最好方法是 package 的作者在指定依赖项时使用版本范围而非特定版本。
dependencies:
url_launcher: ^5.4.0 # version >= 5.4.0 并且 < 6.0.0
dependencies:
url_launcher: '>=5.4.0 <6.0.0' # 指定一个最小和最大的版本号
pub 自动解决冲突问题。 Gradle modules 和 CocoaPods 也是用类似的方式解决平台依赖的。
Path 依赖
通过文件系统 path: 依赖。路径可以是相对的,也可以是绝对的。
dependencies:
packageA:
path: ../packageA/
Git 依赖
依赖Git仓库中的 package和路径:
dependencies:
packageA:
git:
url: https://github.com/flutter/packageA.git
path: packages/packageA