鸿蒙版Flutter高效使用 Packages指南
鸿蒙版Flutter高效使用 Packages指南
在鸿蒙版 Flutter 开发中,合理使用 Packages 可以显著提升开发效率和应用功能。以下是如何在鸿蒙版 Flutter 中使用 Packages 的详细指南。
全文我就用坚果派仓库下的三方库以及pub下的纯dart库来做演示。
一、什么是 Packages
Dart Packages
Dart Packages 是一组代码的集合,通常包含库、工具和其他资源,用于实现特定功能。Dart package 最低要求是包含一个 pubspec.yaml
文件。此外,一个 package 可以包含依赖关系 (在 pubspec.yaml
文件里声明)、 Dart 库、应用、资源、字体、测试、图片和例子等。 pub.dev 上列出了很多 package,由 Google 工程师和 Flutter 和 Dart 社区的开发者开发和发布,你可以用在自己的应用里。
Plugins
插件 (plugin package) 是一种特别的 package,特别指那些帮助你获得原生平台特性的 package。插件可以为 HarmonyOS、Android (使用 Kotlin 或 Java 语言)、 iOS (使用 Swift 或 Objective-C 语言)、Web、macOS、Windows、Linux 平台,或其任意组合的平台编写。比如:某个插件可以为 Flutter 应用提供使用原生平台的发送短信的能力。
现有的 package 支持许多使用场景,例如,网络请求 (http
),自定义导航/路由处理 (go_router
),集成设备 API(如 url_launcher
和 battery_plus
,以及使用第三方平台的 SDK
二、使用 package
搜索 package
通常Package 会被发布到 pub.dev 网站上。
Pub 网站上的 Flutter 页面 展示了与 Flutter 兼容的 package(即声明的依赖通常与 Flutter 兼容),并且所有已发布的 package 都支持搜索。
Pub.dev 上的 Flutter Favorites 页面列出了一系列编写应用时可以首先考虑使用的插件和 package。
在 pub.dev 网站上你可以同时过滤出适合 Android、iOS、Web、Linux、 Windows 或 macOS 的插件,你也可以通过复选框,过滤出组合结果(适配一个或者多个平台)。目前有点遗憾的是目前还不支持筛选出支持HarmonyOS或OpenHarmony的三方库。即使这些库已经支持HarmonyOS或OpenHarmony,比如fluwx。
将 package 依赖添加到应用
要将 package 'fluttertoast' 添加到应用:
-
添加依赖
打开应用文件夹下的
pubspec.yaml
文件,然后在pubspec.yaml
下添加fluttertoast:
。 -
安装
在命令行中运行:
flutter pub get
或者在 VS Code 中点击位于pubspec.yaml
文件顶部操作功能区右侧的 Get Packages -
导入
在 Dart 代码中添加相关的
import
语句。 -
如果有必要,停止并重启应用
- 如果 package 内有特定平台的代码(HarmonyOS或OpenHarmon 的 ArkTS, iOS 的 Swift/Objective-C),代码必须内置到你的应用内。热重载和热重启只对 package 的 Dart 代码执行此操作,所以你需要完全重启应用以避免使用 package 时出现
MissingPluginException
错误。
- 如果 package 内有特定平台的代码(HarmonyOS或OpenHarmon 的 ArkTS, iOS 的 Swift/Objective-C),代码必须内置到你的应用内。热重载和热重启只对 package 的 Dart 代码执行此操作,所以你需要完全重启应用以避免使用 package 时出现
冲突解决
假设你想在应用中使用 some_package
和 other_package
,并且它们依赖于不同版本的 fluttertoast
。于是我们便有了潜在的冲突。避免这种情况的最好方法是 package 的作者在指定依赖项时使用 版本范围 而非特定版本。
dependencies:
url_launcher: ^5.4.0 # Good, any version >= 5.4.0 but < 6.0.0
image_picker: '5.4.3' # Not so good, only version 5.4.3 works.
如果 some_package
声明了以上依赖,并且 another_package
声明了一个兼容的 url_launcher
依赖项,如 '5.4.6'
或 ^5.5.0
, pub 能够自动解决冲突问题。
即使 some_package
和 another_package
声明了不兼容的 fluttertoast
版本,它们实际上仍可能以兼容的方式使用 fluttertoast
。在这种情况下,可在 pubspec.yaml
文件中添加一个依赖覆盖声明来强制使用特定版本,从而处理冲突。
为了强制使用版本为 8.2.11
的 fluttertoast
,你可以对应用的 pubspec.yaml
文件做如下更改:
dependencies:
some_package:
another_package:
dependency_overrides:
fluttertoast: '8.2.11'
三、管理 package 的依赖和版本
为了使版本冲突的风险最小化,请在 pubspec.yaml
文件中指定一个版本范围。
Package 版本
所有 package 都有一个版本号,在它们的 pubspec.yaml
文件中指定。当前的 package 版本会在其名称旁边显示当前版本号。(例如,参阅 fluttertoast
package)以及所有先前版本的列表: fluttertoast 版本列表。
为了确保在更新 package 的时候你的应用不会崩溃,我们建议使用以下格式之一来指定版本范围:
**范围限制:**指定一个最小和最大的版本号。
dependencies:
fluttertoast: '>=8.2.0 <8.2.11'
使用 caret语法 的范围约束: 指定最小版本,这包括从该版本到下一个主要版本的所有版本。
dependencies:
fluttertoast: '^8.2.11'
该语法与第一项中的语法含义相同。
更新 package 依赖
当添加 package 后首次运行 flutter pub get
时, Flutter 将会保存在 pubspec.lock
lockfile 中找到的具体 package 版本。这将确保当你或者团队中其他开发者运行 flutter pub get
后能得到相同版本的 package。
如果你想升级到 package 的最新版本,比如使用 package 的最新特性,请运行 flutter pub upgrade
。这将检索你在 pubspec.yaml
文件中指定的版本约束所允许的最高可用版本。请注意,flutter upgrade
与 flutter update-packages
是两个不同的命令,但它们都会更新 Flutter。
依赖未发布的 package
即使未在 Pub site 上发布,也可以使用 package。对于不用于公开发布的私有插件,或者尚未准备好发布的 package,可以使用其他依赖选项。
Path 依赖
Flutter 应用可以通过文件系统 path:
依赖而依赖于插件。路径可以是相对的,也可以是绝对的。例如,要依赖位于应用相邻目录中的插件 plugin1
,可以使用以下语法:
dependencies:
packageA:
path: ../packageA/
Git 依赖
你也可以依赖存储在 Git 仓库中的 package,如果 package 位于仓库的根目录,可以使用以下语法:
dependencies:
fluttertoast:
git:
url: https://gitcode.com/nutpi/FlutterToast.git
通过 SSH 依赖 Git package
如果你需要通过 SSH 连接私有的仓库,你可以用 SSH 链接依赖对应的 package:
dependencies:
fluttertoast:
git:
url: git@gitcode.com:nutpi/FlutterToast.git
**Git 依赖于文件夹中的 package **
默认情况下,pub 会默认假定 package 位于 Git 仓库的根目录。如果不是这种情况,你可以使用 path
参数指定位置,例如:
dependencies:
fluttertoast:
git:
url: https://gitcode.com/nutpi/FlutterToast.git
path: packages/fluttertoast
最后,你可以使用 ref
参数将依赖固定到 git 特定的 commit、branch 或者 tag。比如
branch
dependencies:
fluttertoast:
git:
url: https://gitcode.com/nutpi/FlutterToast.git
ref: null-safety
commit
dependencies:
fluttertoast:
git:
url: https://gitcode.com/nutpi/FlutterToast.git
ref: 6a7a2c69910f216c01d581c57cd13b5717a1432f
tag
dependencies:
fluttertoast:
git:
url: https://gitcode.com/nutpi/FlutterToast.git
ref: some-branch
参考
- [如何使用Flutter与OpenHarmony通信 FlutterChannel](https://gitcode.com/openharmony-sig/flutter_samples/blob/master/ohos/docs/04_development/如何使用Flutter与OpenHarmony通信 FlutterChannel.md)
- [开发module](https://gitcode.com/openharmony-sig/flutter_samples/blob/master/ohos/docs/04_development/如何使用混合开发 module.md)
- 开发package
- 开发plugin
- [开发FFI plugin](https://gitcode.com/openharmony-sig/flutter_samples/blob/master/ohos/docs/04_development/开发FFI plugin.md)
- Package dependencies
坚果派
坚果派由坚果等人创建,团队拥有若干华为HDE,以及若干其他领域的三十余位万粉博主运营。专注于分享的技术包括HarmonyOS/OpenHarmony,ArkUI-X,元服务,服务卡片,华为自研语言,BlueOS操作系统、团队成员聚集在北京、上海、广州、深圳、南京、杭州、苏州、宁夏等地。 聚焦“鸿蒙原生应用”、“智能物联”和“AI赋能”、“人工智能”四大业务领域,依托华为开发者专家等强大的技术团队,以及涵盖需求、开发、测试、运维于一体的综合服务体系,赋能文旅、媒体、社交、家居、消费电子等行业客户,满足社区客户数字化升级转型的需求,帮助客户实现价值提升。 目前上架鸿蒙原生应用18款,三方库72个。
总结
本文是一篇关于如何在鸿蒙版 Flutter 开发中有效使用 Packages 的技术指南。文章提供了从基础概念到高级管理技巧的全面介绍,帮助开发者提升开发效率并丰富应用功能。文章强调了在鸿蒙版 Flutter 开发中合理使用 Packages 的重要性,指出这可以显著提高开发效率和应用的丰富度。通过使用 Packages,开发者可以利用现成的代码集合来实现特定功能,避免重复造轮子。最后文章详细介绍了如何在鸿蒙版 Flutter 中使用 Packages,包括搜索、添加依赖、导入和解决冲突的步骤。希望对大家有用。
通过合理使用 Packages,鸿蒙版 Flutter 开发者可以显著提高开发效率,创建功能更丰富、性能更稳定的应用。文章提供的详细指南和示例代码,为开发者在实际项目中应用这些知识提供了坚实的基础。
- 17回答
- 20粉丝
- 11关注
- 鸿蒙版 Flutter 开发:平台判断与问题处理指南
- 鸿蒙版 Flutter 开发:平台判断与问题处理指南
- 鸿蒙版Flutter开发相关
- 鸿蒙版Flutter环境搭建
- 鸿蒙Flutter实战:11-使用 Flutter SDK 3.22.0
- 鸿蒙Flutter实战:06-使用ArkTs开发Flutter鸿蒙插件
- Flutter 鸿蒙化 使用 Flutter Channel实现和Flutter和HarmonyOS交互
- 鸿蒙版Flutter环境配置Windows 版本
- 鸿蒙版Flutter快递查询助手
- 鸿蒙版Flutter快递查询助手
- 鸿蒙版Flutter环境配置Windows 版本
- 鸿蒙版Flutter实现发送短信的功能
- 鸿蒙版Flutter·全国/世界城市信息库
- 鸿蒙Flutter实战:04-如何使用DevTools调试Webview
- 鸿蒙版Flutter仓库变更,从仓库迁移看鸿蒙生态进化!