Capp — 命令行界面
Capp 是 Finch 内置的 CLI 库,允许你构建包含表格、颜色和交互式输入的丰富控制台应用。
CappManager 和 CappController
import 'package:finch/finch_capp.dart';
class AppCommand extends CappController {
@override
String get name => 'app:info';
@override
String get description => '显示应用信息';
@override
Future<void> handle() async {
console.info('应用名称:Finch');
console.success('状态:运行中');
console.warning('模式:开发');
}
}
表格输出
@override
Future<void> handle() async {
var headers = ['姓名', '邮箱', '角色'];
var rows = [
['Ali Ahmadi', '[email protected]', 'admin'],
['Sara Mohammadi', '[email protected]', 'user'],
];
console.table(headers, rows);
}
颜色参考
| 方法 | 颜色 | 用途 |
|---|---|---|
console.info(msg) |
蓝色 | 信息消息 |
console.success(msg) |
绿色 | 成功操作 |
console.warning(msg) |
黄色 | 警告 |
console.error(msg) |
红色 | 错误 |
console.line(msg) |
默认 | 普通文本 |
用户输入
@override
Future<void> handle() async {
// 读取字符串
var name = await console.readString('请输入姓名:');
// 读取整数
var age = await console.readInt('请输入年龄:', def: 18);
// 读取布尔值
var confirm = await console.readBool('确认吗?', def: false);
// 从列表中选择
var env = await console.select(
'选择环境:',
options: ['development', 'staging', 'production'],
);
console.info('您的选择:\$env');
}
进度条
var progress = console.progress('处理中...', total: 100);
for (var i = 0; i <= 100; i++) {
await Future.delayed(Duration(milliseconds: 50));
progress.update(i);
}
progress.done();