flexprint 0.0.1+c flexprint: ^0.0.1+c copied to clipboard
Printing tabular reports is made easier using this library. Print Headings, horizontal lines. Print to console or StringBuffer.
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));
}