image
一个帮助开发Flutter应用程序的工具 .---------------------------------------------- | github地址: | https://github.com/rhymelph/fluct | pub地址: | https://pub.dev/packages/fluct `----------------------------------------------
该工具无需添加到依赖项中,我们只需要激活即可,使用如下命令:
$ pub global activate fluct
# 或者
$ flutter pub global activate fluct
fluct
目前只有一个create
命令,用于创建文件及widget
,文件名按Dart
文件命名规则指定的单词与单词之间添加下划线,并无需指定.dart
后缀,例如:index_page
fluct create
在Flutter
开发过程中,我们创建文件是必须的,而AS自带的创建文件,并没有自动的生成相关的内容,这会让开发者非常的苦恼,类名还需要自己手动敲的话,而该命令,直接可以一步到位。
当运行此命令后,命令行会输出以下内容
Help Flutter application create a new file
Usage: fluct create [arguments] <path>
-h, --help Print this usage information.
-t, --type
[custom] Create a new file about custom widget in 'fluct.yaml'
创建自定义widget的文件,-a 为 指定你在‘fluct.yaml’文件声明的指令
[stful] Create a new file about StatefulWidget
创建StatefulWidget文件
[stless] Create a new file about StatelessWidget
创建StatelessWidget文件
-a, --arg create a new file about your custom widget use arg in 'fluct.yaml'
使用你在'fluct.yaml'声明的指令
Run "fluct help" to see global options.
可以看到,该命令输出的内容是简单易懂的,我们来简单使用一下吧。
创建IndexPage
页面,继承自StatefulWidget
,可以使用如下命令:
$ fluct create -t stful ./index_page
Create a new file about StatefulWidget
create class IndexPage
create success
exit 0
运行成功之后,我们会在项目下找到index_page.dart
文件,内容为:
import 'package:flutter/material.dart';
class IndexPage extends StatefulWidget {
@override
_IndexPageState createState() => _IndexPageState();
}
class _IndexPageState extends State<IndexPage> {
@override
Widget build(BuildContext context) {
return Container();
}
}
当然,你也可以指定哪个文件夹,例如,我要在./lib/src/page 文件夹下创建IndexPage
,使用如下命令
$ fluct create -t stful ./lib/src/page/index_page
在开始之前,我们需要在项目根目录下新建一个fluct.yaml
文件,因为fluct create -t custom
命令会找到它,内容如下:
inh: |
import 'package:flutter/material.dart';
class $NAME$ extends InheritedWidget {
const $NAME$({
Key key,
@required Widget child,
}) : assert(child != null),
super(key: key, child: child);
static $NAME$ of(BuildContext context) {
return context.dependOnInheritedWidgetOfExactType(aspect: $NAME$) as $NAME$;
}
@override
bool updateShouldNotify($NAME$ old) {
return false;
}
}
这里,我声明了inh
命令,然后运行这个命令之后会在生成文件的时候添加inh
对应的值,内容中我们值得注意的是$NAME$
占位符,该字符串会被替换成根据文件名生成的内容,例如:index_page
会插入IndexPage
到$NAME$
占位符中,最后,我们运行以下命令:
$ fluct create -t custom -a inh ./index_inherited
最后,我们能够在根目录下找到index_inherited.dart
文件,内容也是对应的自定义内容
import 'package:flutter/material.dart';
class IndexInherited extends InheritedWidget {
const IndexInherited({
Key key,
@required Widget child,
}) : assert(child != null),
super(key: key, child: child);
static IndexInherited of(BuildContext context) {
return context.dependOnInheritedWidgetOfExactType(aspect: IndexInherited) as IndexInherited;
}
@override
bool updateShouldNotify(IndexInherited old) {
return false;
}
}
有小伙伴可能会疑惑,fluct create
运行之后会发现未找到命令,可能你使用了flutter pub global activate fluct
命令激活,这个时候,我们可以使用flutter pub run fluct create
运行
最后,希望大家喜欢这个工具,并关注我,了解更多关于
Flutter/Dart开发