iFlutter,一款加速Flutter开发的插件

cf560aa29c14fe60a18d88180a867c27.png

/   今日科技快讯   /

2月24日消息,阿里巴巴集团公布2022财年第三季度业绩,截至2021年12月31日,阿里巴巴第三季度营收2,425.8亿元,预估2,449.1亿元;第三季度调整后每ADS收益16.87元。净利润204.29亿元,净利润同比下降75%。

/   作者简介   /

明天就是周六啦,提前祝大家周末愉快!

本篇文章来自投稿1004145468的投稿,文章主要分享了自己的Flutter插件,相信会对大家有所帮助!同时也感谢作者贡献的精彩文章。

1004145468的博客地址:

https://juejin.cn/user/1169536102445358/posts

/   前言   /

iFlutter是一款辅助Flutter开发的 IDEA 插件。

插件安装

插件已上传官方 Plugins 仓库,可在 IDEA Plugins 界面搜索 iFlutter 下载。

功能说明

  • 资源文件管理

  • 依赖树生成

  • Dart代码生成

  • Http接口Mock

  • 包检查更新

  • 提取远程依赖

/   开始   /

注册资源

Flutter开发过程中,不可避免地需要使用到本地资源。比如:使用 bg_login.png 文件作为背景图,开发一个登录界面,步骤如下:

1. 在项目根目录创建 images 文件夹,并把 bg_login.png 添加到 images;

2. 注册资源到 pubspec.yaml:

···
flutter:
  uses-material-design: true
  assets:
    - images/bg_login.png    #注册资源    
···

3. 使用资源:

Image.asset('images/bg_login');

使用资源前都需要在 pubspec.yaml 文件中注册,并且通过 硬编码 引用,凸显出两个问题:

  • 存在繁琐的机械劳动

  • 出错率高

iFlutter解决方案: 当在 指定的目录 中添加、删除、重命名文件时,iFlutter 插件都会感知,并自动修改 pubspec.yaml 文件,同时生成配套的 _res.dart文件(类似Android中的R文件),通过 R.xx 的方式就能使用资源。

其中指定的目录 ,并不是 iFlutter 所固定要求的,开发者可自行配置,默认 images、 assets,具体配置如下:

6f73159230cc3d808377ca7da99ebe02.png

生成的 _res.dart 文件的规则又是什么呢?如果 指定的目录 是 images,那么就会生成 lib/res/images_res.dart 文件,对应的类名 ImagesRes。按此类推,如果目录名是 Assets,生成的文件和类名分别是 lib/res/assets_res.dart 和 AssetsRes。值得一提的是,如果开发者手动修改 pubspec.yaml 文件中资源的配置,iFlutter 也会感知,并重新生成 _res.dart 文件。

从 节省包体积、照顾强迫症研发 出发,可配置某些资源不会在 _res.dart 文件中生成字段,比如 .ttf、.json 文件,默认都生成,开发者可自行配置:

a3256175463aa58b850797b678bf7ea4.png

往项目中添加资源时,文件名不要存在 -,比如 bg-login.png,否则 pubsepec.yaml 文件生成会受到影响,可使用 bg_login.png 代替。

如果AndroidStudio安装了 iFlutter 插件,资源自动注册功能默认打开,如果想禁用此功能,可配置关闭,配置如下:

2a973f3b1bb880ce00db8a3a018d4dc9.png

资源重置

当合并分支代码时,如果出现 _res.dart 文件冲突,可重新生成:

e02caed113993dc8bb203defd3f0df5a.png

iFlutter 通过以下两个步骤,对资源进行重置:

  • 将 指定目录 资源重新注册到 pubsepec.yaml 中;

  • 重新生成 _res.dart 文件;

检查重复资源

在项目版本需求开发周期内,同一个设计资源可能被不同的开发小伙伴重复引入,导致包体积增涨,iFlutter 支持重复资源检测,效果如下:

5ca105f91a6077d9beee8d51be455cbd.gif



归纳资源

随着Flutter项目的不断迭代,项目中所使用的资源也会越来越多。大部分的情况下,项目所使用的资源文件都是直接平展在目录下,类似:

images
  - login_wx.png
  - login_qq.png
  - login_phone.png
  - mine_setting.png
  - mine_defailt_portrait.png
  - launcher.png
  ...

为了方便项目模块化,iFlutter 支持对目录下的文件进行归类,以 _ 为规则进行分类,分类结果如下:

images
  - login
    - login_wx.png
    - login_qq.png
    - login_phone.png
  - mine
    - mine_setting.png
    - mine_defailt_portrait.png
  - launcher.png
  ...

资源归类后,iFlutter 会重新注册资源到 pubspec.yaml 中,并修改受影响的 *.dart 文件。

并非所有目录都支持资源归类,默认 assets 、images 目录,开发者可自行调整,具体如下:

561f84b6775288471c607fd569fd5e61.png

依赖树生成

用于分析Flutter项目 包依赖 关系,对于生成的结果支持 Command/Control + F 搜索,功能入口:


fd0b03f499f6837527b1008995857a7b.gif


Json 转 Dart Entity

在Flutter项目的 lib 目录及其 子目录 下,iFlutter 支持 Json 转 Dart Entity 功能,在其他目录下该功能不可用,使用效果如下:

add14736cf323c77af711895bb1b6fda.gif

默认生成的 Dart Entity 是支持 空安全 的,如果项目还没适配到 Flutter2.x 版本,通过修改 iFlutter 配置即可,配置如下:

6cf91346b0bfad5d0bf2bfc3bb486216.png

填写类名时,采用驼峰命名法

Dart Entity 补全 fromJson、toJson 方法

对于新的实体类,可以通过上一节 Json 转 Dart Entity 工具自动生成。针对项目中已有的类,那我们又该如何生成 toJson 和 fromJson 方法呢?先看使用效果:

f4f97cc2882b0c18b75d3481b9789b14.gif

官方插件 Dart 已经提供了生成 Constructor、Named Constructor 和 toString方法,而 iFlutter 的 fromJson 和 toJson 正好加强了官方对类的 fix(补全) 吧。

Live Template

使用效果:

fc1158db60fa3cd9576367d493b0febc.gif

使用说明:

4e820f28e0681c26447223bc4430004a.png

代码细节:

e1fef96eb32ff26ff3074d1d84ae8f38.png

Http接口Mock

iFlutter 开启的 HTTP Mock与项目绑定,MOCK 数据以项目为维度进行隔离。

e5e4ef1a331f131c75ab2235be4554dc.gif

包检查更新

iFlutter 插件会定时(5min)检查项目中直接依赖的Packages是否可更新,如果远程有最新版本,则 pubspec.yaml 对应节点会高亮显示,点击右侧 icon 会打开对应的页面,效果如下:

cb2317ca997018aa782eaec5c89380f7.png

提取远程依赖

iFlutter 支持将远程依赖一键修改成本地依赖,方便对 Package 进一步扩展或者修复。将光标停留在对应的 Package 上,右键选择 convert to local dependency后,在弹出目录选择对话框中,选择需要存储的位置。

6c2b707f2eb14200f680ef92704c2542.gif

推荐阅读:

我的新书,《第一行代码 第3版》已出版!

再学一遍android:fitsSystemWindows属性

PermissionX 1.5发布,支持申请Android特殊权限啦

欢迎关注我的公众号

学习技术或投稿

eda8f9f5633b19e6725962a98b262173.png

51d5da27657707770c1cb52a975100c1.png

长按上图,识别图中二维码即可关注

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值