Flutter插件开发流程

2023-09-18 14:45:34

本文主要给大家介绍如何开发Flutter Plugin中Android的部分。有关Flutter以及Flutter Plugin的概念,感兴趣的可以从官网查看相关资料。

一、简介

笔者的环境是Mac下Android Studio进行的开发,AS也是谷歌官推的,安装flutter插件后,开发起来相对于其他IDE来说,方便很多,自带了三种模板:

  • Flutter Application: Flutter应用
  • Flutter Plugin:Flutter插件 Flutter
  • Package:纯Dart组件

Plugin其实就是一个特殊的Package。Flutter Plugin提供Android或者iOS的底层封装,在Flutter层提供组件功能,使Flutter可以较方便的调取Native的模块。很多平台相关性或者对于Flutter实现起来比较复杂的部分,都可以封装成Plugin。其原理如下:
在这里插入图片描述

消息在client和host之间通过平台通道(platform channels)来进行的,之间的通讯都是异步的。

二、创建组件

直接在Android Studio中新建一个Flutter Plugin的工程,当然也可以使用命令行来进行,例如创建一个flutter_text_plugin。

flutter create --org com.example --plugin flutter_text_plugin

如果想支持swift或者kotlin,可以用如下命令进行创建:

flutter create --org com.example --plugin -i swift -a kotlin flutter_text_plugin

更多的参数选项,大家可以 查看帮助文档,当然还是比较推荐直接用AS进行创建,简单直观。用AS打开项目,可以看到项目的组织结构。

root
	android
	example
	ios
	lib
	...

android以及ios文件夹是我们将要编写插件的native层的地方,lib文件夹是编写与native层映射的地方,native与flutter之间不能直接通信,必须通过MethodChannel来间接调用。example文件夹则是例子工程,编写的插件可以直接在这个项目中进行验证。在本文中,我们主要在android目录下进行,也就是android部分。

三、编写Android代码

用AS打开flutter_text_plugin/android项目,这样子开发起来比较方便。但是打开过后,会发现出现了很多错误,提示找不到flutter相关的东西,我们仔细看这个项目,会发现跟我们平时用AS建的Android项目有所不同,少了很多部分,目录也有所不同。这是因为这个android项目不需要能够直接去运行,因此减少了很多东西。但是对于初次接触的人来说,可能是一头懵逼,例如该如何添加第三方库,如何添加proguard rule等等。

更多推荐

数据治理在数字化转型中的重要性

在当今数字化时代,企业的成功与否往往取决于它们对数据的处理和管理能力。数据治理作为数字化转型的关键组成部分,对于帮助企业有效管理和利用数据,实现业务增长和创新至关重要。本文将探讨为什么数字化转型必须进行数据治理,并介绍数据治理的几个关键优势。随着技术的进步和数字化转型的发展,大量的数据被不断产生和积累。这些数据代表了企

WPF中DataGrid控件绑定数据源

步骤创建数据源:首先,我们需要创建一个数据源,可以是一个集合(如List、ObservableCollection等),也可以是一个DataTable对象。数据源中的每个元素代表一行数据。设置DataGrid的ItemsSource属性:在XAML中,我们可以通过设置DataGrid的ItemsSource属性来将数据

视频汇聚/视频云存储/视频监控管理平台EasyCVR分发rtsp流起播慢优化步骤详解

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安防视频监控的能力,也具备接入AI智能分析的能力,可拓

​LeetCode解法汇总2490. 回环句

目录链接:力扣编程题-解法汇总_分享+记录-CSDN博客GitHub同步刷题项目:https://github.com/September26/java-algorithms原题链接:力扣描述:句子是由单个空格分隔的一组单词,且不含前导或尾随空格。例如,"HelloWorld"、"HELLO"、"helloworldh

Docker从认识到实践再到底层原理(五)|Docker镜像

前言那么这里博主先安利一些干货满满的专栏了!首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助。高质量博客汇总然后就是博主最近最花时间的一个专栏《Docker从认识到实践再到底层原理》希望大家多多关注!Docker从认识到实践再到底层原理第五章-镜像Docker镜像

飞行动力学 - 基础点摘要整理

飞行动力学-基础点摘要整理随着飞行动力学视频完整看了一遍,大体对飞行动力学有了基本的了解。从其根本原理和概念来看,并不是非常复杂,将经典力学用于飞机,进行了各种飞行场景的解析。当然,一遍也只能知道一个大概,不过对于从来没有接触过飞行动力学的我来说,是一个全新的角度对于经典力学的应用。顺便也对于之前整理的一些摘要或者说课

KMP,ACM集训

目录831.KMP字符串输入格式输出格式数据范围输入样例:输出样例:解析:KMP模板D-CyclicNacklace解析:KMP-next数组应用+循环字符串判断F-PowerStrings解析:KMP-next数组应用+循环字符串判断H-Countthestring解析:next数组理解J-StringProblem

软件设计师笔记系列(四)

😀前言随着技术的快速发展,软件已经成为我们日常生活中不可或缺的一部分。从智能手机应用到大型企业系统,软件都在为我们提供便利、增强效率和创造价值。然而,随之而来的是对软件质量的日益增长的关注。软件的质量不仅关乎其功能性和性能,还涉及其可靠性、使用性、可维护性和可移植性。为了更好地理解和评估软件的质量,我们需要一个结构化

day49:QT day2,信号与槽、对话框

一、完善登录框点击登录按钮后,判断账号(admin)和密码(123456)是否一致,如果匹配失败,则弹出错误对话框,文本内容“账号密码不匹配,是否重新登录”,给定两个按钮ok和cancel,点击ok后,会清除密码框中的内容,继续进行登录;如果点击cancel按钮,则关闭界面。如果账号和密码匹配,则弹出信息对话框,给出提

比特币 ZK 赏金系列:第 1 部分——支付解密密钥

以前,我们使用零知识赏金(ZKB)来支付比特币上的数独解决方案。在本系列中,我们将使用ZKB来解决范围更广的更实际的问题。在第1部分中,我们应用ZKB来支付解密密钥。假设Alice使用对称密钥K加密她的文件。为了安全起见,她联系了在线备份服务Bob,以保留K的副本。她不想让Bob知道K,所以她使用门限秘密共享方案将K分

FPGA 图像缩放 千兆网 UDP 网络视频传输,基于88E1518 PHY实现,提供工程和QT上位机源码加技术支持

目录1、前言版本更新说明免责声明2、相关方案推荐UDP视频传输--无缩放FPGA图像缩放方案我这里已有的以太网方案3、设计思路框架视频源选择IT6802解码芯片配置及采集动态彩条跨时钟FIFO图像缩放模块详解设计框图代码框图2种插值算法的整合与选择UDP协议栈UDP视频数据组包UDP协议栈数据发送UDP协议栈数据缓冲I

热文推荐