Flutter库和package

575 阅读2分钟

库是一种模块化构建项目的方法,将代码分割到多个文件中, 用于共享代码或模块给其他开发人员

Flutter中库主要有三种:

  1. 自定义库
import 'lib/xxx.dart';
  1. 系统内置库
import 'dart:math';    
import 'dart:io'; 
import 'dart:convert';
  1. Pub包管理的库
// pub.dev和中国镜像站
https://pub.dev
https://pub.flutter-io.cn

如何获取pub库

  1. 项目根目录新建一个pubspec.yaml
  2. 在pubspec.yaml中配置名称 、描述、依赖等信息
  3. 运行 pub get 获取包下载到本地
  4. 项目中引入库 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