swift中文文档_Flutter 中文文档:使用 Packages
Flutter 支持使用其他開發者向 Flutter 和 Dart 生態系統貢獻的共享 package,這意味著你可以快速構建應用而不是一切從零開始。
現有的 package 支持許多使用場景,例如,網絡請求 (http),自定義導航/路由處理 (fluro),集成設備 API(如 (url_launcher?和?battery,以及使用第三方平臺的 SDK(如 Firebase 的 (FlutterFire)。
如果你想添加資源、圖片或字體,無論是存儲在文件中還是 package 中,請參閱?Flutter 中文文檔:添加資源和圖片?這篇文檔。
1. 使用 package
下面的內容將為你描述如何使用已經發布了的 packages。
1.1 搜索 package
Package 會被發布到?pub.dev。
Pub 網站上的 Flutter 登陸頁面?展示了與 Flutter 兼容的 package(即聲明的依賴通常與 Flutter 兼容),并且所有已發布的 package 都支持搜索。
1.2 將 package 依賴添加到應用
要將 package ‘css_colors’ 添加到應用:
(1)添加依賴
打開應用文件夾下的?pubspec.yaml?文件,然后在?pubspec.yaml?下添加?css_colors:。
(2)安裝
在命令行中運行:flutter pub get
或者
在 Android Studio/IntelliJ 中點擊?pubspec.yaml?文件頂部操作功能區的?Packages get
在 VS Code 中點擊位于?pubspec.yaml?文件頂部操作功能區右側的?Get Packages。
(3)導入
在 Dart 代碼中添加相關的?import?語句。
(4)如果有必要,停止并重啟應用
如果 package 內有特定平臺的代碼(Android 的 Java/Kotlin, iOS 的 Swift/Objective-C),代碼必須內置到你的應用內。熱重載和熱重啟只對 package 的 Dart 代碼執行此操作,所以你需要完全重啟應用以避免使用 package 時出現?MissingPluginException?錯誤。
對于這些步驟,Pub 上任何 package 頁面的?Installing tab?選項卡都是一個很方便的參考。
完整示例,參閱下面的 4.1 例子CSS Colors example?。
1.3 沖突解決
假設你想在應用中使用?some_package?和?other_package,并且它們依賴于不同版本的?url_launcher。于是我們便有了潛在的沖突。避免這種情況的最好方法是 package 的作者在指定依賴項時使用版本范圍而非特定版本。
dependencies:??url_launcher:?^0.4.2????#?Good,?any?0.4.x?version?where?x?>=?2?works.
??image_picker:?'0.1.1'???#?Not?so?good,?only?version?0.1.1?works.
如果?some_package?聲明了以上依賴,并且?another_package?聲明了一個兼容的?url_launcher?依賴項,如?'0.4.5'?或?^0.4.0,pub?能夠自動解決沖突問題。類似的注解也適用于插件 package 特定平臺?Gradle modules?和/或?CocoaPods?的依賴關系。
即使?some_package?和?another_package?聲明了不兼容的?url_launcher?版本,它們實際上仍可能以兼容的方式使用?url_launcher。在這種情況下,可在?pubspec.yaml?文件中添加一個依賴覆蓋聲明來強制使用特定版本,從而處理沖突。
為了強制使用版本為?0.4.3?的?url_launcher,你可以對應用的?pubspec.yaml?文件做如下更改:
dependencies:??some_package:
??another_package:
dependency_overrides:
??url_launcher:?'0.4.3'
如果依賴沖突項不是 package 自身,而是如?guava?這樣特定于 Android 的庫,那么依賴的覆蓋聲明必須添加到 Gradle 的構建邏輯中。
為了強制使用版本為?23.0?的?guava,你可以對?android/build.gradle?文件做如下更改:
configurations.all?{????resolutionStrategy?{
????????force?'com.google.guava:guava:23.0-android'
????}
}
CocoaPods 目前尚不提供依賴項覆蓋功能。
2. 開發新的 package
如果某個 package 不適用于你的特定需求,你可以開發新的自定義 package(見明日推文)。
3. 管理 package 的依賴和版本
為了使版本沖突的風險最小化,請在 pubspec 文件中指定一個版本范圍。
3.1 Package 版本所有 package 都有一個版本號,在它們的?pubspec.yaml?文件中指定。當前的 package 版本會在其名稱旁邊顯示當前版本號。
當使用簡寫形式?plugin1:?將 package 添加到?pubspec.yaml?時,表明 plugin1 package 的任何版本都可以被使用。為了確保在更新 package 的時候你的應用不會奔潰,我們建議使用以下格式之一來指定版本范圍:
范圍限制:指定一個最小和最大的版本號,例如:
dependencies:??url_launcher:?'>=0.1.2?<0.2.0'
使用 caret 語法?的范圍約束與常規的范圍約束類似。
dependencies:??collection:?'^0.1.2'
3.2 更新 package 依賴
當你添加一個 package 后首次運行?flutter pub get(IntelliJ 中的 ‘Packages Get’),Flutter 將會保存在?pubspec.lock?lockfile 中找到的具體 package 版本。這將確保當你或者團隊中其他開發者運行?flutter pub get?后能得到相同版本的 package。
如果你想升級到 package 的最新版本,比如使用 package 的最新特性,請運行?flutter packages upgrade(Intellij 中的?flutter packages upgrade)。這將檢索你在?pubspec.yaml?文件中指定的版本約束所允許的最高可用版本。
3.3 依賴未發布的 package
即使未在 Pub site 上發布,也可以使用 package。對于不用于公開發布的私有插件,或者尚未準備好發布的 package,可以使用其他依賴選項。
Path?依賴,Flutter 應用可以通過文件系統?path:?依賴而依賴于插件。路徑可以是相對的,也可以是絕對的。例如,要依賴位于應用相鄰目錄中的插件?plugin1,可以使用以下語法:
dependencies:??plugin1:
????path:?../plugin1/
Git?依賴:你也可以依賴存儲在 Git 倉庫中的 package。如果 package 位于倉庫的根目錄,可以使用以下語法:
dependencies:??plugin1:
????git:
??????url:?git://github.com/flutter/plugin1.git
Git?依賴于文件夾中的 package:默認情況下,Pub 假定 package 位于 Git 倉庫的根目錄。如果不是這種情況,你可以使用?path?參數指定位置,例如:
dependencies:??package1:
????git:
??????url:?git://github.com/flutter/packages.git
??????path:?packages/package1
最后,你可以使用?ref?參數將依賴固定到 git 特定的 commit、branch 或者 tag。
4. 例子
下面的示例將介紹使用 packages 的一些必要步驟。
4.1 例子:使用 CSS Colors package
css_colors?package 為 CSS 顏色定義顏色常量,允許你在 Flutter 框架中任何需要?Color?類型的地方使用它們。
要使用這個 package:
(1)創建一個名為?cssdemo?的新項目
(2)打開?pubspec.yaml,并添加依賴?css-colors:
dependencies:??flutter:
????sdk:?flutter
替換為:
dependencies:??flutter:
????sdk:?flutter
??css_colors:?^1.0.0
(3)在命令行中運行?flutter packages get,或者點擊 Intellij 中的?Packages get
(4)打開?lib/main.dart?并將其全部內容替換為:
?import?'package:css_colors/css_colors.dart';?import?'package:flutter/material.dart';
?void?main()?{
???runApp(MyApp());
?}
?class?MyApp?extends?StatelessWidget?{
???@override
???Widget?build(BuildContext?context)?{
?????return?MaterialApp(
???????home:?DemoPage(),
?????);
???}
?}
?class?DemoPage?extends?StatelessWidget?{
???@override
???Widget?build(BuildContext?context)?{
?????return?Scaffold(body:?Container(color:?CSSColors.orange));
???}
?}
(5)運行應用。當你點擊 ‘Show Flutter homepage’ 時,你將看到手機默認瀏覽器打開并出現 Flutter 主頁。
4.2 例子:使用 url_launcher package 來打開瀏覽器
url_launcher?插件允許你在移動平臺上打開默認瀏覽器以顯示給定的 URL。它演示了 package 如何也可能包含特定于平臺的代碼(我們將這些 package 稱為插件)。它同時支持 Android 和 iOS。
要使用這個插件:
(1)新建一個名為 ‘lauchdemo’ 的新項目
(2)打開?pubspec.yaml,然后添加依賴?url_launcher:
dependencies:??flutter:
????sdk:?flutter
替換為:
dependencies:??flutter:
????sdk:?flutter
??url_launcher:?^0.4.1
(3)在命令行中運行?flutter packages get,或者點擊 Intellij 中的 ‘Packages get’
(4)打開?lib/main.dart?并將其全部內容替換為:
?import?'package:flutter/material.dart';?import?'package:url_launcher/url_launcher.dart';
?void?main()?{
???runApp(MyApp());
?}
?class?MyApp?extends?StatelessWidget?{
???@override
???Widget?build(BuildContext?context)?{
?????return?MaterialApp(
???????home:?DemoPage(),
?????);
???}
?}
?class?DemoPage?extends?StatelessWidget?{
???launchURL()?{
?????launch('https://flutter.dev');
???}
???@override
???Widget?build(BuildContext?context)?{
?????return?Scaffold(
???????body:?Center(
?????????child:?RaisedButton(
???????????onPressed:?launchURL,
???????????child:?Text('Show?Flutter?homepage'),
?????????),
???????),
?????);
???}
?}
(5)運行應用(如果你的應用在添加插件之前已經運行,請停止并重啟應用)。當你點擊?Show Flutter homepage?時,你將看到手機默認瀏覽器打開并出現 Flutter 主頁。
總結
以上是生活随笔為你收集整理的swift中文文档_Flutter 中文文档:使用 Packages的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: flink 三种时间机制_Flink1.
- 下一篇: autocomplete触发事件_输入内