我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Flutter插件开发-(基础篇)

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Flutter插件开发-(基础篇)

      在开发flutter项目的时分通常会运用一些三方的的packages或许plugin,二者的区别:packages主要是包括的Dart代码块,而plugin则包括iOS和android的代码。

因此来说创立pluginpackages的流程是相似的,下面就以创立plugin为例进行展示:

网上有很多复制粘贴的帖子,翻到我这篇你无疑是幸运的,放心往下看吧。

1.创建Plugin插件

  1. flutter create --org com.qidian --template=plugin --platforms=android,ios -i swift -a java flutter_hello
  • 使用--template=plugin声明创建的是同时包含了iOS和Android代码的plugin;

  • 使用--org选项指定组织,一般采用反向域名表示法;

  • 使用-i选项指定iOS平台开发语言,objc或者swift;

  • 使用-a选项指定Android平台开发语言,java或者kotlin。

pubspec.yaml 文件

flutter:  plugin:    platforms:      android:        package: com.example.hello #安卓包名        pluginClass: HelloPlugin      ios:        pluginClass: HelloPluginenvironment:  sdk: ">=2.1.0 <3.0.0"  # Flutter versions prior to 1.12 did not support the  # flutter.plugin.platforms map.  flutter: ">=1.12.0"

下面是官网制作插件的详细步骤,根据需要查漏补缺

Developing packages & plugins | Flutter
 

命令行执行后打开项目目录如下 (我使用的开发工具是VSCode,Windows和Mac都有)

打开plugin项目能看到有个example是能运行的

lib中有iOSandroid目录,用于存放咱们iOSandroid的代码,但是不可运转,这儿是不是和咱们的组件化很像

注:Flutter脚手架在创建Plugin时默认实现了一个获取系统版本号的示例,该示例的原理是分别在iOS和Android平台获取到系统版本号,然后通过MethodChannel调用返回给Flutter平台显示。

2. plugin代码编写

lib目录下dart文件: 

在iOS端进行注册

SwiftFlutterHelloPlugin.swift 文件

import Flutterimport UIKitpublic class SwiftFlutterHelloPlugin: NSObject, FlutterPlugin {  public static func register(with registrar: FlutterPluginRegistrar) {    let channel = FlutterMethodChannel(name: "com.qidian/flutter_hello", binaryMessenger: registrar.messenger())    let instance = SwiftFlutterHelloPlugin()    registrar.addMethodCallDelegate(instance, channel: channel)  }  public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) {    if (call.method == "getBatteryLevel") {       receiveBatteryLevel(result: result)    } else {       result("iOS " + UIDevice.current.systemVersion)    }  }   private func receiveBatteryLevel(result: FlutterResult) {   let device = UIDevice.current   device.isBatteryMonitoringEnabled = true   if device.batteryState == UIDevice.BatteryState.unknown {    result(FlutterError(code: "UNAVAILABLE",              message: "Battery level not available.",              details: nil))   } else {    result(Int(device.batteryLevel * 100))   }  }}

 

这样就算好了,咱主要目的是通过本来快速了解和熟悉插件的制作流程(大同小异),至于android代码也是相似的需要的查下教程就👌🏻,不在赘述。

3. 发布

CD到当前demo下执行flutter pub publish--dry-run 检查是否具备发布条件

flutter packages pub publish --dry-run

Package has 0 warnings. 则代表 没什么问题

另外需要注意的点是:

1. pubspec.yaml需要设置homepage

2.description进行插件功能性描述

  • pubspec.yaml 配置主页

在发布前还需要有一个 License文件,咱们就在giuhub创建一个项目,名字随便起,license挑选BSD3

下载license文件拖到插件plugin中,再次执行flutter packages pub publish --dry-run命令

  • 发布

flutter packages pub publish --server=https://pub.dartlang.org

这儿需要认证

 指定服务器

复制上面的链接浏览器打开选择谷歌账号 (需要挂梯子才行)

 

修改后保存执行 source .bash_profile 使设置生效

 网络代理配置这块巨坑,执行命令curl google.com检测自己是否在墙内,一般使用的翻墙软件哪里都有端口号复制到.bash_profile文件就行,然后执行 source .bash_profile 使设置生效

 如果返回这个HTML文件则代表翻墙成功

只要可以科学上网很快就上传成功了 

去pub.dev官网去验证下刚才上传的插件有没有成功 

https://pub.dev/my-packages

至此, Flutter中Plugin的创建与发布结束,完结散花🌸

来源地址:https://blog.csdn.net/RreamigOfGirls/article/details/130198555

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Flutter插件开发-(基础篇)

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MyBatis ORM插件开发基础

MyBatis 是一款广泛使用的 Java 持久层框架,它通过 XML 或注解的方式将 Java 对象与 SQL 语句进行映射,从而简化了数据访问层的开发。插件开发是 MyBatis 扩展功能的一种方式,允许开发者自定义框架的行为。以下是
MyBatis ORM插件开发基础
2024-09-15

wordpress开发之插件开发初识(wordpress插件开发基础)

首先,你要在wp-content/plugins/下建立一个文件夹,文件夹的名字最好只由字母、数字、“-”和下滑组成。同时,还要在这个文件夹下建立一个同名的php文件。比如你的文件夹名字为my-plugin,则php
2022-06-12

Android多功能时钟开发案例(基础篇)

本文我们进入Android多功能时钟开发实战学习,具体的效果可以参考手机上的时钟,内容如下首先我们来看一看布局文件layout_main.xml 整个布局:2022-06-06

umi插件开发仿dumi项目实现基础路由解析

这篇文章主要为大家介绍了umi插件开发仿dumi项目实现基础路由解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-01-28

Android开发基础 事件处理

Android事件处理 1-基于监听的事件处理 基于监听的事件处理,其实就是为UI组件绑定事件监听器。 在事件监听处理模型中,主要涉及以下三个对象。 (1)Event Source(事件源):一般是指各个组件。 (2)Event(事件):一
2022-06-06

Android开发系列——基础篇2:APP工程结构

在安装完成Android studio,进行开发之前,对于工程目录结构的了解是必不可少的。 APP工程结构 工程目录说明 Android studio的工程目录分为两个层级: 第一层是通过File—>New—>New project创建的新
2022-06-06
2023-09-03

【Flutter】Flutter 开发环境搭建 ( Android Studio 下 Flutter / Dart 插件安装 | Flutter SDK 安装 | 环境变量配置 | 开发环境检查 )

文章目录I . Flutter 学习资料II . Flutter 开发环境搭建III . Android Studio 环境安装 Flutter / Dart 插件IV . 下载 Flutter SDKV . 设置 Flutter 网络镜像
2022-06-06

Python开发基础-day2

一.python列表list是处理和存放一组数据的列表    用法:    acclist.index()   调出list中内容位置    acclist.insert()  (要插入的位置,插入的内容)  list插入内容    acc
2023-01-31

Python搭建插件式框架(基于组件开发

Python搭建插件式框架(基于组件开发)概念基于组件的开发(Component-Based Development,简称CBD)是一种软件开发范型。它是现今软件复用理论实用化的研究热点,在组件对象模型的支持下,通过复用已有的构件,软件开发
2023-01-31

零基础入门篇之Linux及Arm-Linux程序开发笔记

前言:本文记录了自己从一个完全不懂Linux的人如何一步步学会Linux程序开发的过程。当然也希望本文能够达到它的目的,让那些和我一样没有任何基础的人也能快速入门Linux程序开发。 一、Arm-Linux程序开发平台简要介绍Arm-Lin
2022-06-04

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录