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();