Flutter 插件使用必知必会,阿里巴巴发布“限量版”Android零基础宝典

插件的使用

添加依赖

  1. 打开项目下的pubspec.yaml文件,在 dependencies 下添加依赖名称和版本等信息

  2. 在命令行下运行flutter packages get,或者在 IDE 中 点击 Packages Get 等待它下载完成,并生成插件注册代码

  • Android:

  • android/app/scr/main/java/io/flutter/plugins目录下自动生成的GeneratedPluginRegistrant.java中,会添加插件的注册代码。

public final class GeneratedPluginRegistrant {
public static void registerWith(PluginRegistry registry) {
if (alreadyRegisteredWith(registry)) { return; }
UrlLauncherPlugin.registerWith(registry.registrarFor(“io.flutter.plugins.urllauncher.UrlLauncherPlugin”));

}

}

  • 在 App 的 MainActivity 创建时会去调用这个注册方法

class MainActivity : FlutterActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
GeneratedPluginRegistrant.registerWith(this)
}
}

  • iOS

  • ios/Runner目录下自动生成的GeneratedPluginRegistrant.m中,会添加插件的注册代码。

#import “GeneratedPluginRegistrant.h”
#import <url_launcher/UrlLauncherPlugin.h>

@implementation GeneratedPluginRegistrant

  • (void)registerWithRegistry:(NSObject*)registry {
    [FLTUrlLauncherPlugin registerWithRegistrar:[registry registrarForPlugin:@“FLTUrlLauncherPlugin”]];
    }

@end

  • AppDelegate.swift启动后去调用注册

@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate, WXApiDelegate {

override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?
) -> Bool {
GeneratedPluginRegistrant.register(with: self)
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
}

  1. 在项目文件中 import 所需的包名,并使用

  2. 如果依赖中存在 platform-specific code (Java/Kotlin for Android, Swift/Objective-C for iOS),要确保代码能够编译进 App ,必须 Restart App,防止发生MissingPluginException异常。Hot reload 或者 Hot restart 只对 dart 代码有效。

版本约束

版本格式:主版本号.次版本号.修订号,版本号递增规则如下:

  • 主版本号:当你做了不兼容的 API 修改,
  • 次版本号:当你做了向下兼容的功能性新增,
  • 修订号:当你做了向下兼容的问题修正。

更详细的参考语义化版本

基本用法:

any # 所有版本,等同于不写。对pub运行性能有影响,不推荐
1.2.3 # 明确的版本号
‘>=1.2.3’ # 还有 >1.2.3, <=1.2.3, <1.2.3
^1.2.3 # Caret syntax 等同于 >=1.2.3 <2.0.0

注意:如果在版本约束中使用了’>‘,’<'字符,一定要加引号,否则无法被当作 YAML 的语法解析

版本冲突

如果项目依赖了 A , B 库,他们都依赖了一个 C ,但 C 的版本不同,可能会产生版本冲突。pub 会尝试找到符合所有依赖约束的版本号。如果找不到能匹配的版本,但 AB 库依赖 C 库的 API 是一样的,那么可以添加一个依赖覆盖来强制指定某一版本。

注:pub 是 Dart SDK 提供的一个包管理工具

dependencies:
some_package:
other_package:
dependency_overrides:
url_launcher: ‘0.4.3’

如果是 Android 平台的库依赖冲突,可以在 appgradle 文件中强制指定版本

configurations.all {
resolutionStrategy {
force ‘com.google.guava:guava:23.0-android’
}
}

注意: iOS 平台下 CocoaPods 不支持强制版本覆盖

从不同的依赖源添加依赖

SDK

The SDK source is used for any SDKs that are shipped along with packages, which may themselves be dependencies. Currently, Flutter is the only SDK that is supported.

通俗讲,就是 Flutter SDK 自带的库。打开我们 Flutter 的安装地址,进入flutter/packages可以看到各种包,如flutter,flutter_driver,flutter_test等。

➜ packages git:(stable) ✗ ls
analysis_options.yaml flutter_localizations
flutter flutter_test
flutter_driver flutter_tools
flutter_goldens fuchsia_remote_debug_protocol
flutter_goldens_client
➜ packages git:(stable) ✗ pwd
/Users/xxx/flutter/packages

在 Flutter 项目中写过测试的同学对上面几个依赖应该不陌生

dependencies:
flutter:
sdk: flutter # 来源于flutter sdk
dev_dependencies:
flutter_test:
sdk: flutter
flutter_driver:
sdk: flutter

Hosted

A hosted package is one that can be downloaded from pub.dartlang.org (or another HTTP server that speaks the same API).

pub

dependencies:
transmogrify: ^1.4.0

自己的服务器

dependencies:
transmogrify: ^1.4.0
transmogrify:
hosted:
name: transmogrify
url: http://your-package-server.com
version: ^1.4.0

Git

dependencies:
kittens:
git: git://github.com/munificent/kittens.git

指定分支

dependencies:
kittens:
url: git://github.com/munificent/kittens.git
ref: some-branch

pub 默认包目录在 git 仓库的根目录,如果要指定在别的位置,可以用 path 参数

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
img

最后

下面是辛苦给大家整理的学习路线,有需要的可以点击这里免费获取

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
[外链图片转存中…(img-jDDySyV7-1710835581790)]

最后

下面是辛苦给大家整理的学习路线,有需要的可以点击这里免费获取
[外链图片转存中…(img-XiiNtCFq-1710835581790)]

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值