在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
插件已上传插件市场,于是打开Preferences
->Plugins
,在Marketplace
能够直接搜索安装。插件
插件会从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/
复制代码
配置完成目录后,便可生成资源索引文件了:
插件默认的快捷键是Alt/Opt + G。
插件也会自动检测assets目录下的文件变更,若是发生变更会自动生成新的内容。若是你不须要这个,你也能够关掉。
资源左侧的icon是能够点击的,点击能够定位到文件处。若是资源是svg,还会显示预览。(至于图片预览为啥还没显示,目前调试有点问题,因此还没展现)
插件默认生成的文件目录在lib/generated
目录下,若是你不喜欢,你能够本身更改,目录支持多级,以/
分割。索引文件的类名默认是Assets
,若是你但愿Android
一点,你也能够改成R
。
插件默认打开了自动检测功能,若是不须要的时候能够关掉。
资源索引默认命名是小驼峰式,更符合dart
语言规范。开启Named with parent
会为资源索引加上一级文件夹名,若是有重名的会再多取一级,若是想要索引短一点,能够关掉此选项。
最后附上github地址,欢迎star,使用插件有什么问题或者建议,欢迎提出!