脚本编写
项目是通过 flutter 开发 App,所以脚本主要用于创建 dart 文件,其他项目大同小异。创建 create_dart.py(名字可以随便取)文件,具体如下
import os
import sys
# 判断参数
if len(sys.argv) == 1:
print('请输入要创建的文件名')
exit()
index = 0
while index < len(sys.argv)-1:
index += 1
# 类名
page_name_list = sys.argv[index].split('_')
class_name = ''
for item in page_name_list:
class_name = '{0}{1}'.format(class_name, item.capitalize())
page_class_name = '{0}Page'.format(class_name)
# 文件名
page_name = '{0}_page.dart'.format(sys.argv[index])
# 获取脚本运行路径
current_path = os.getcwd()
# 文件路径
page_name_path = os.path.join(current_path, page_name)
# 创建文件并写入内容
with open(page_name_path, "w") as file:
file.write("import 'package:flutter/material.dart';\n")
file.write("\n")
file.write('class %s extends StatelessWidget {\n' % page_class_name)
file.write(" %s({Key? key}) : super(key: key);\n" % page_class_name)
file.write("\n")
file.write(" @override\n")
file.write(" Widget build(BuildContext context) {\n")
file.write(" return Scaffold(\n")
file.write(" backgroundColor: Colors.white,\n")
file.write(" appBar: _appBar(),\n")
file.write(" body: _body(),\n")
file.write(" );\n")
file.write(" }\n")
file.write("\n")
file.write(" AppBar _appBar() {\n")
file.write(" return ThemeAppBar.builder(title: '');\n")
file.write(" }\n")
file.write("\n")
file.write(" Widget _body() {\n")
file.write(" return Container();\n")
file.write(" }\n")
file.write("}\n")
file.close()
exit()
自定义终端命令(mac)
- 打开终端
- 输入
vi ~/.zshrc,或者直接open ~/.zshrc - 写入
alias create_dart='python3 create_dart.py',create_dart.py是脚本所在文件,按照路径填写即可。 - 退出保存
- 运行 ``create_dart```
- 如果报
zsh: permission denied: create_dart.py错误,运行chmod -R 755 create_dart.py即可
alias create_dart='python3 create_dart.py' 的意思白话文描述一下,就是注册一个命令create_dart,以后在终端输入create_dart相当于运行python3 create_dart.py
运行
-
打开终端,运行
create_dart test -
运行结果,在运行命令所在目录下会创建 test_page.dart 文件,文件内容如下
import 'package:flutter/material.dart'; class TestPage extends StatelessWidget { TestPage({Key? key}) : super(key: key); @override Widget build(BuildContext context) { return Scaffold( backgroundColor: Colors.white, appBar: _appBar(), body: _body(), ); } AppBar _appBar() { return ThemeAppBar.builder(title: ''); } Widget _body() { return Container(); } }