Flutter开发包和插件指南

Flutter包和插件的开发流程步骤

package介绍

  • 一个pubspec.yaml文件(定义包的生命)
  • 一个lib文件夹(存放代码)

package类型

  • Dart包
  • 插件包

创建包或插件

  • 可视化的方式(推荐)
  • 命令行的方式
可视化方式

创建方式: 使用AndroidStudio =》File =》new Flutter Project…=>Flutter Plugin(插件) /Flutter Package(包)

插件包含文件
  • lib中包含 MethodChannel和Native进行通信
  • android中包含android对应代码
  • ios中包含iOS 中对应代码
  • pubspec.yaml声明文件
包包含文件
  • lib,Dart部分代码
  • pubspec.yaml声明文件
  • 不包含Android.ios文件
命令行方式

创建插件

flutter create --org org.yangdx(域名) --template=plugin(插件) demo(名字)

创建包

flutter create --template=package flutter_color_plugin(名字)

Flutter包和插件开发与发布

创建一个Flutter包flutter_color_plugin将字符串颜色解析成FLutter中Color颜色

代码编写

在flutter_color_plugin.dart中编写如下代码

library flutter_color_plugin;

import 'dart:ui';

/// A Calculator.
class ColorUtil {
  static const int BLACK = 0xFF000000;
  static const int DKGRAY = 0xFF444444;
  static const int GRAY = 0xFF888888;
  static const int LTGRAY = 0xFFCCCCCC;
  static const int WHITE = 0xFFFFFFFF;
  static const int RED = 0xFFFF0000;
  static const int GREEN = 0xFF00FF00;
  static const int YELLOW = 0xFFFFFF00;
  static const int CYAN = 0xFF00FFFF;
  static const int MAGENTA = 0xFFFF00FF;
  static const int TRANSPARENT = 0;

  /**
   * 将String颜色转换成int16禁止的颜色
   */
  static int intColor(String colorString) {
    if (colorString?.isEmpty ?? true) {
      throw ArgumentError('Unknow color');
    }
    if (colorString[0] == '#') {
      int color = int.tryParse(colorString.substring(1), radix: 16);
      if (colorString.length == 7) {
        color = 0x00000000ff000000;
      } else if (colorString.length != 9) {
        throw ArgumentError('Unknow color');
      }
      return color;
    } else {
      int color = sColorNameMap[(colorString.toLowerCase())];
      if (color != null) {
        return color;
      } else {
        return intColor('#' + colorString);
      }
    }
  }

  /**
   * 将String颜色转换成Color类型
   */
  static Color color(String colorString) {
    return Color(intColor(colorString));
  }

  static const sColorNameMap={
    'black':BLACK,
    'darkgray':DKGRAY,
    'gray':GRAY,
    'lightgray':LTGRAY,
    'white':WHITE,
    'red':RED,
    'green':GREEN,
    'yellow':YELLOW,
    'cyan':CYAN,
    'magenta':MAGENTA,
    'aqua':0xFF00FFFF,
    'fuchsia':0xFFFF00FF,
    'dartgrey':DKGRAY,
    'grey':GRAY,
    'lightgrey':LTGRAY,
    'lime':0xFF00FF00,
    'maroon':0xFF800000,
  };

}
pubspec.yaml添加项目描述
name: flutter_color_plugin
#描述
description: flutter_color_plugin
#版本号
version: 0.0.1
#作者
author: yangdxg
#仓库github地址
homepage:
  • 可以在README中添加使用手册
  • 在LICENSE添加开源协议
  • CHANGELOG中添加版本记录
发布插件
  • 检查包是否准备成功
yangdongxingdeMacBook-Pro:flutter_color_plugin yangdongxing$ flutter packages pub publish --dry-run
Publishing flutter_color_plugin 0.0.1 to https://pub.flutter-io.cn:
|-- .gitignore
|-- .metadata
|-- CHANGELOG.md
|-- LICENSE
|-- README.md
|-- lib
|   '-- flutter_color_plugin.dart
|-- pubspec.yaml
'-- test
    '-- flutter_color_plugin_test.dart

Package has 0 warnings.
  • 发布插件

    flutter packages pub publish
    #会提示使用Google账号登陆,授权后会自动上传
    #我这里pub一直链接不上google导致下面错误(稍后等网络情况好的时候再传)
    #Waiting for your authorization...
    #Authorization received, processing...
    #It looks like accounts.google.com is having some trouble.
    #Pub will wait for a while before trying to connect again.
    

    发布成功后直接在https://pub.dev/flutter中搜索即可

注:解决依赖冲突

  • 如果项目同时依赖了A,B,
  • A,依赖C :0.1,B依赖C:0.2
  • 只需要再依赖上C:0.2即可
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,527评论 5 470
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,314评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,535评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,006评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,961评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,220评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,664评论 3 392
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,351评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,481评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,397评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,443评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,123评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,713评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,801评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,010评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,494评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,075评论 2 341

推荐阅读更多精彩内容