flexprint 0.0.1+b flexprint: ^0.0.1+b copied to clipboard
Dart library allowing flex layout to console print. Console Printing tabular reports is made easier using this library. Flexprint allows great flexibilty to specify the table's appearance.
example/flexprint_example.dart
import 'dart:convert';
import '../lib/flexprint.dart';
void main() {
final fp = FlexPrint();
fp.horizontalLine(doubleLine: true);
fp.write('Customer Name', flex: 3);
fp.write('Amount Due', flex: 2, alignment: Alignment.end);
fp.write('Invoice Details', flex: 3);
fp.write('Status', flex: 2, alignment: Alignment.center);
fp.write('\n');
fp.horizontalLine(doubleLine: true);
invoices.forEach((row) {
fp.write(row.name, flex: 3);
fp.write(row.amountDue.toString(), flex: 2, alignment: Alignment.end);
fp.write(row.invoiceDetail, flex: 3);
fp.write(row.status, flex: 2, alignment: Alignment.center);
fp.write('\n');
});
fp.horizontalLine(char: '_');
}
final invoices = [
Invoice(
name: 'John Doe & Co',
amountDue: 6789.12,
invoiceDetail: "Inv No 66987 of 06/15/2020",
status: "Due"),
Invoice(
name: 'M D Rao & Co',
amountDue: 16789.12,
invoiceDetail: "Inv No 66989-92 of 08/12/2020",
status: "Paid 10/05"),
];
class Invoice {
String name;
double amountDue;
String invoiceDetail;
String status;
Invoice({
this.name,
this.amountDue,
this.invoiceDetail,
this.status,
});
Map<String, dynamic> toMap() {
return {
'name': name,
'amountDue': amountDue,
'invoiceDetail': invoiceDetail,
'status': status,
};
}
factory Invoice.fromMap(Map<String, dynamic> map) {
if (map == null) return null;
return Invoice(
name: map['name'],
amountDue: map['amountDue'],
invoiceDetail: map['invoiceDetail'],
status: map['status'],
);
}
String toJson() => json.encode(toMap());
factory Invoice.fromJson(String source) =>
Invoice.fromMap(json.decode(source));
}