FlutterAssetsGenerator,一款Flutter资源索引生成插件

引言

​ 在Flutter中,资源的引用通常都须要如今根目录下定义一个目录,例如assets,而后在pubspec.yaml中配置目录,最后引用,写法通常以下:git

Image.asset(
  'assets/images/add.png',
  width: 40,
  height: 40,
),
复制代码

​ 这样引入资源总感受很容易写错,目录和文件名都得写完整,手滑了一下就容易写错。于是又有了下面一种简化的方法:github

///获取资源目录
String assetsPath(String name,
    {String rootPath = 'assets/images/',
    String dir = '',
    String fileType = '.png'}) {
  return '$rootPath$dir$name$fileType';
}
复制代码

​ 先定义一个相似于上面的方法,方法中对路径进行一下封装,于是使用资源文件的方式变成了下面这种:markdown

Image.asset(
  assetsPath('add'),
  width: 40,
  height: 40,
)
复制代码

​ 看起来是减小了很多要手写的地方,然而仍是要手写一下文件名,文件后缀不一样也须要再额外多写一点内容。并且还要再包一个方法,看起来也不是很好看。app

FlutterAssetsGenerator就是为了解决Flutter中资源引用这一个蛋疼的方式而来的。svg

介绍

​ 若是有作过Android开发的朋友应该都知道,在Android中,资源的索引会有一个R文件,这是一个自动生成的文件。放进资源drawable目录里的资源,通常引用就用R.drawable.xx方式引用,这样找资源首先很方便,再来也不会出现什么差错。oop

​ 本插件想要实现的效果就是这样的,首先插件会遍历项目下的assets目录,而后整理出文件索引,最后生成一个assets.dart文件,如:ui

///This file is automatically generated. DO NOT EDIT, all your changes would be lost.
class Assets {
  Assets._();

  static const String imagesAdd = 'assets/images/add.png';
  static const String imagesArrowDown = 'assets/images/arrow_down.png';
  static const String imagesBack = 'assets/images/back.png';
  static const String imagesBackWhite = 'assets/images/back_white.png';
  static const String imagesBounds = 'assets/images/bounds.png';
  static const String imagesCloseWhite = 'assets/images/close_white.png';

}
复制代码

​ 最后引用资源就能够以下了:this

Image.asset(
  Assets.imagesAdd,
  width: 40,
  height: 40,
)
复制代码

​ 这样有什么好处呢?首先资源整理到一块儿,方便查看,再来引用的时候都是直接引用常量,有代码提醒,也不怕写错了。插件实现的功能其实都是很简单的,也能够本身手写成这样。本插件的目的就是为了省略手写这一步骤,提升生产力。spa

使用

一、安装

image-20201124105737198

插件已上传插件市场,于是打开Preferences->Plugins,在Marketplace能够直接搜索安装。插件

二、配置assets目录

​ 插件会从pubspec.yaml文件下读取assets目录,所以要使用本插件,你须要在pubspec.yaml下配置资源目录:

flutter:

  # The following line ensures that the Material Icons font is
  # included with your application, so that you can use the icons in
  # the material Icons class.
  uses-material-design: true

  # To add assets to your application, add an assets section, like this:
  assets:
    - assets/images/
复制代码

三、使用

配置完成目录后,便可生成资源索引文件了:

image-20201124110013734

插件默认的快捷键是Alt/Opt + G。

2020-11-24 10.50.35

​ 插件也会自动检测assets目录下的文件变更,若是发生变更会自动生成新的内容。若是你不须要这个,你也能够关掉。2020-11-24 11.05.32

资源左侧的icon是能够点击的,点击能够定位到文件处。若是资源是svg,还会显示预览。(至于图片预览为啥还没显示,目前调试有点问题,因此还没展现)

四、设置

image-20201124110127634

​ 插件默认生成的文件目录在lib/generated目录下,若是你不喜欢,你能够本身更改,目录支持多级,以/分割。索引文件的类名默认是Assets,若是你但愿Android一点,你也能够改成R

​ 插件默认打开了自动检测功能,若是不须要的时候能够关掉。

​ 资源索引默认命名是小驼峰式,更符合dart语言规范。开启Named with parent会为资源索引加上一级文件夹名,若是有重名的会再多取一级,若是想要索引短一点,能够关掉此选项。

最后附上github地址,欢迎star,使用插件有什么问题或者建议,欢迎提出!

相关文章
相关标签/搜索