库地址:https://pub.dev/packages/dcli
使用文档地址:https://dcli.onepub.dev/
介绍:
DCli 是 Dart 的控制台 SDK。 使用 DCli 控制台 SDK 使用 Dart 编程语言构建跨平台、命令行 (CLI) 应用程序和脚本。 DCli(发音为 d-kleye)控制台 SDK 包括 co
安装:
1.如果您只想使用 DCli 库,那么您可以像添加任何其他包一样将 DCli 添加到您的 pubspec.yaml 中。
dependencies:
dcli: 0.37.0
2.如果您想使用DCli 工具,包括 Shebang (#!) 支持,您需要全局激活 DCli。
dart pub global activate dcli
dcli install
使用例子:
void main() {
print("现在让我们做点有用的事.");
var username = ask('username:');
print('username: $username');
var password = ask('password:', hidden: true);
print('password: $password');
// create a directory
if (!exists('tmp')) {
createDir('tmp');
}
// 截断任何现有内容
// 文件 'tmptext.txt' 并写入
// “Hello world”到文件。
'tmp/text.txt'.write('Hello world');
// 将“My second line”附加到文件“tmptext.txt”。
'tmp/text.txt'.append('My second line');
//另一个追加到同一个文件。
'tmp/text.txt'.append('My third line');
// 现在将文件 tmptext.txt 复制到 second.txt
copy('tmp/text.txt', 'tmp/second.txt', overwrite: true);
//让我们将刚刚创建的文件转储到控制台
read('tmp/second.txt').forEach((line) => print(line));
// 让我们通过运行来证明这两个文件都存在
// 递归查找。
find('*.txt').forEach((file) => print('Found $file'));
// 现在让我们使用 OS tail 命令尾随文件。
// 再一次飞镖扩展我们对待一个字符串
//作为操作系统命令并运行该命令
//一个子进程。
// 写入stdout和stderr输出
//直接到控制台。
'tail tmp/text.txt'.run;
// 让我们做一个字数统计捕获标准输出,
// stderr 将被吞噬。
'wc tmp/second.txt'.forEach((line) => print('Captured $line'));
if (confirm("Should I delete 'tmp'? (y/n):")) {
// 现在让我们清理一下
delete('tmp/text.txt');
delete('tmp/second.txt');
deleteDir('tmp');
}
}
ask函数的使用
var res = ask(
'请输入内容:', // Chinese
// toLower: true,
// 如果toLower为真,则返回的结果将转换为小写。如果您需要比较输入的值,这会很有用。
// hidden: false,
// 如果hidden为真,则不会在屏幕上显示输入的字符。
// required: false,
// 如果required为真,则用户必须输入一个值。如果用户按下回车键,则会提示用户输入一个值。
// defaultValue: '2909552840',
// 如果用户按下回车键,则将使用默认值。
// validator: Ask.dontCare, // 电子邮件验证器
// validator: Ask.email, // 电子邮件验证器
);
echo(red(res));
Menu菜单的使用
var res = Menu(['one', 'two', 'three'], title: '选择器:').choose();
echo(red(res.result), newline: true);
echo(green(res.index.toString()));
//定义一个menu类方便管理
class Menu {
final List<String> choices;
final String title;
Menu(this.choices, {this.title = ''});
Answer choose() {
print("");
final result = menu(prompt: title, options: choices);
final index = choices.indexOf(result);
return Answer(result: result, index: index);
}
}
class Answer {
final String result;
final int index;
const Answer({required this.result, required this.index});
}
confirm函数的使用
if (confirm('你是不是要退出?')) {
echo(red('退出'), newline: true);
} else {
echo(green('继续'), newline: true);
}
THE END