Flutter命令行表格生成插件cli_table的使用
Flutter命令行表格生成插件cli_table的使用
cli_table
是一个 Dart 包,它通过在终端中显示静态表格数据来增强用户体验。以下是该包的主要功能和一些使用示例。
Features
- 在终端内以表格格式显示数据。
- 提供易于使用的API。
- 通过chalkdart对表头进行颜色/背景样式设置。
- 自定义列宽。
- 支持列和行单元格跨越。
- 根据预定义宽度的内容截断。
- 水平内容对齐(左/中/右)。
- 垂直内容对齐(顶/中/底)。
- 内边距(左右)。
- 单词换行选项。
- 每个单元格的自定义。
Basic Example
import 'package:cli_table/cli_table.dart';
void main() {
final table = Table(
header: ['Rel', 'Change', "By", "When"], // Set headers
columnWidths: [10, 20, 20, 30], // Optionally set column widths
);
// Table class extends dart List,
// so you're free to use all the usual List methods
table
..add(['v0.1', 'First test', 'someone@gmail.com', '9 minutes ago'])
..add(['v0.1', 'Second test', 'other@gmail.com', '13 minutes ago']);
// Call `toString()` to render the final table for output
print(table.toString());
}
Table Types and Layouts
Horizontal Tables
final table = Table(
header: ['Index', 'Name'],
);
table.addAll([
['1.', 'First'],
['2.', 'Second'],
]);
print(table.toString());
Vertical Tables
final table = Table();
table.addAll([
{'Some key': 'Some value'},
{'Another key': 'Another value'},
]);
print(table.toString());
Cross Tables
final table = Table(header: ["", "Top Header 1", "Top Header 2"]);
table.addAll([
{
'Left Header 1': ['Value Row 1 Col 1', 'Value Row 1 Col 2']
},
{
'Left Header 2': ['Value Row 2 Col 1', 'Value Row 2 Col 2']
}
]);
print(table.toString());
Other Usage Examples with Different Table Options
Wrap Text on Word Boundaries
final table = Table(
style: TableStyle(
border: [], // Clear border style/color (default is ["gray"])
header: [], // Clear header style/color (defaults to ['red'])
),
columnWidths: [7, 9], // Requires fixed column widths
wordWrap: true,
);
table.addAll([
[
'Hello how are you?',
'I am fine thanks! Looooooong',
['Words that exceed', 'the columnWidth will', 'be truncated.'].join('\n'),
['Text is only', 'wrapped for', 'fixed width', 'columns.'].join('\n'),
]
]);
print(table.toString());
Use columnSpan
to Span Columns
final table = Table();
table.addAll([
[{'colSpan': 2, 'content': 'First'}], // Set custom column span
[{'colSpan': 2, 'content': 'Second'}],
['Third', 'Fourth']
]);
Use rowSpan
to Span Rows
final table = Table();
table.addAll([
[
{'rowSpan': 2, 'content': 'First'}, // Set custom row span
{'rowSpan': 2, 'content': 'Second', 'vAlign': VerticalAlign.center}, // Set custom horizontal alignment
'hello'
],
['howdy']
]);
Credits
示例代码
下面是一个更复杂的例子,展示了如何使用 cli_table
和 chalkdart
来创建一个带有样式和跨行/列功能的测试覆盖率报告。
import 'package:chalkdart/chalk.dart';
import 'package:cli_table/cli_table.dart';
void main() {
// 1. Instantiate Table instance and set options
final table = Table(
header: [
{
'content': 'Test Coverage Report',
'colSpan': 6,
'hAlign': HorizontalAlign.center
},
],
style: TableStyle(header: ['blue']),
);
// 2. Add table data
table.addAll([
[
'Module',
'Component',
'Test Cases',
'Failures',
'Durations',
'Success Rate'
],
[
{
'rowSpan': 2,
'content': chalk.grey('Services'),
'vAlign': VerticalAlign.center
},
'User',
50,
4,
'3m 7s',
chalk.bgGreen.black(' 92.0% ')
],
['Payment', 100, 80, '7m 15s', chalk.yellow(' 80.0% ')],
[
{
'content': chalk.underline.grey('Subtotal'),
'colSpan': 2,
'hAlign': HorizontalAlign.right
},
150,
84,
'10m 22s',
chalk.bgRed.black(' 38.3% ')
],
[
{
'rowSpan': 2,
'content': chalk.grey('Controllers'),
'vAlign': VerticalAlign.center
},
'User',
24,
18,
'1m 30s',
chalk.yellow(' 75.0% ')
],
['Payment', 30, 2, '50s', chalk.bgGreen.black(' 98.9% ')],
[
{
'content': chalk.underline.grey('Subtotal'),
'colSpan': 2,
'hAlign': HorizontalAlign.right
},
54,
42,
'2m 20s',
chalk.yellow(' 77.3% ')
],
[
{
'content': chalk.underline.bold('TOTAL'),
'colSpan': 2,
'hAlign': HorizontalAlign.right
},
chalk.bold(204),
152,
'12m 42s',
chalk.yellow(' 74.5% ')
],
]);
// 3. Output to console
print(table.toString());
}
这个示例展示了如何使用 cli_table
创建一个详细的测试覆盖率报告,并利用 chalkdart
添加颜色和样式。希望这些信息对你有帮助!
更多关于Flutter命令行表格生成插件cli_table的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter命令行表格生成插件cli_table的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个关于如何在Flutter项目中使用cli_table
命令行表格生成插件的示例代码。cli_table
插件虽然主要用于Dart命令行应用程序,但我们可以展示如何在Flutter项目的命令行工具部分(例如用于生成报表或日志)使用它。
首先,确保你已经在你的pubspec.yaml
文件中添加了cli_table
依赖:
dependencies:
flutter:
sdk: flutter
cli_table: ^0.3.1 # 请检查最新版本号
然后运行flutter pub get
来安装依赖。
接下来,你可以创建一个Dart脚本(比如generate_table.dart
),在这个脚本中使用cli_table
来生成表格。这里是一个简单的示例:
import 'package:cli_table3/cli_table3.dart';
void main() {
// 创建一个CliTable实例
final table = CliTable({
'headers': ['Name', 'Age', 'Occupation'],
'colWidths': [20, 10, 25], // 可选:设置列宽
'border': true, // 可选:是否显示边框
});
// 添加行数据
table.rows.add({'Name': 'Alice', 'Age': '30', 'Occupation': 'Engineer'});
table.rows.add({'Name': 'Bob', 'Age': '25', 'Occupation': 'Designer'});
table.rows.add({'Name': 'Charlie', 'Age': '35', 'Occupation': 'Teacher'});
// 打印表格到控制台
print(table.toString());
}
在这个示例中,我们首先导入了cli_table3
包(注意:最新的包名可能是cli_table3
而不是cli_table
,请根据实际情况调整)。然后,我们创建了一个CliTable
实例,并设置了表头、列宽和是否显示边框。接着,我们向表格中添加了几行数据,并最终打印出表格。
为了运行这个脚本,你可以在项目的根目录下打开终端,并运行:
dart path/to/generate_table.dart
将path/to/generate_table.dart
替换为你实际脚本的路径。运行后,你应该会在控制台中看到格式化的表格输出。
虽然这个示例是在一个单独的Dart脚本中运行的,但你可以根据需要在Flutter项目的其他部分(如命令行工具或后台任务)中集成和使用cli_table
。注意,由于Flutter主要用于构建UI应用程序,因此在UI线程中直接使用此类命令行工具可能不太合适。通常,你会在Flutter应用的后台线程或脚本中使用它们来生成报告或日志,然后可能将这些信息显示在UI中或以文件形式保存。