flutter09 - 包管理器

Flutter09 - 包管理器

一個APP在實際開發中往往會依賴很多包,而這些包通常都有交叉依賴關係、版本依賴等,如果由開發者手動來管理應用中的依賴包將會非常麻煩。因此,各種開發生態或編程語言官方通常都會提供一些包管理工具:

  • Android提供了Gradle來管理依賴
  • iOS用Cocoapods或Carthage來管理依賴
  • Node中通過npm等
  • flutter如何使用配置文件pubspec.yaml
name: first_flutter_app # 應用或包名
description: A new Flutter application. # 應用或包的描述/簡介

version: 1.0.0+1 # 應用或包的版本號

environment:  # sdk環境
  sdk: ">=2.1.0 <3.0.0"

dependencies: # 應用或包依賴的其他包或插件
  flutter:
    sdk: flutter

 cupertino_icons: ^0.1.2

dev_dependencies: # 開發環境依賴的工具包
  flutter_test:
    sdk: flutter

flutter: # flutter相關的配置選項
  uses-material-design: true

每個字段的意義:

  • name:應用或包名稱。
  • description: 應用或包的描述、簡介。
  • version:應用或包的版本號。
  • dependencies:應用或包依賴的其它包或插件。
  • dev_dependencies:開發環境依賴的工具包(而不是flutter應用本身依賴的包)。
  • flutter:flutter相關的配置選項。

下載和使用第三方庫

Pub(https://pub.dev/ )是Google官方的Dart Packages倉庫,類似於node中的npm倉庫,android中的jcenter。

搜索需要的 第三方庫後

添加新的依賴

cupertino_icons: ^0.1.2

# 新添加的依賴
english_words: ^3.1.3

然後點擊Packages get

我們可以在控制檯中看到以下內容

/Users/a/flutter/bin/flutter --no-color packages get
Running "flutter pub get" in first_flutter_app...                   3.4s
Process finished with exit code 0

我們也可以在控制檯,定位到當前工程目錄,然後手動運行flutter packages get 命令來下載依賴包。

dependenciesdev_dependencies的區別:

前者的依賴包將作爲APP的源碼的一部分參與編譯,生成最終的安裝包。而後者的依賴包只是作爲開發階段的一些工具包,主要是用於幫助我們提高開發、測試效率,比如flutter的自動化測試包等

使用第三方庫

import 'package:english_words/english_words.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final wordStr = WordPair.random(); //使用第三方庫生成一個隨機單詞

    return MaterialApp(
      title: "使用第三方庫生成一個隨機單詞",
      home: Scaffold(
        appBar: AppBar(
          title: Text("使用第三方庫生成一個隨機單詞"),
        ),
        body: Center(
          child: Column(
            children: <Widget>[
              Text(
                "$wordStr",
              ),
            ],
          ),
        ),
      ),
    );
  }
}

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-kqtiVe7i-1584404599137)(https://s1.ax1x.com/2020/03/17/8trfyT.png)]

其他依賴方式

  • 依賴本地包

    如果我們正在本地開發一個包,包名爲pkg1,我們可以通過下面方式依賴:

    dependencies:
        pkg1:
            path: ../../code/pkg1
    

    路徑可以是相對的,也可以是絕對的。

  • 依賴Git:你也可以依賴存儲在Git倉庫中的包。如果軟件包位於倉庫的根目錄中,請使用以下語法

    dependencies:
      pkg1:
        git:
          url: git://github.com/xxx/pkg1.git
    

    上面假定包位於Git存儲庫的根目錄中。如果不是這種情況,可以使用path參數指定相對位置,例如:

    dependencies:
      package1:
        git:
          url: git://github.com/flutter/packages.git
          path: packages/package1
    

但還有一些其它依賴方式,完整的內容讀者可以自行查看:https://www.dartlang.org/tools/pub/dependencies

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章