report_table_builder 1.0.8
report_table_builder: ^1.0.8 copied to clipboard
A report table builder flutter widget for your flutter applications.
example/lib/main.dart
import 'package:flutter/material.dart';
import 'package:report_table_builder/report_table/models/left_cell_data_model.dart';
import 'package:report_table_builder/report_table/models/report_table_model.dart';
import 'package:report_table_builder/report_table/models/table_data_place_holder.dart';
import 'package:report_table_builder/report_table/report_table_builder.dart';
import 'package:report_table_builder/report_table/utils/report_table_utils.dart';
class TableDataSource {
static List<String> mainHeadersTitle = [
"Today",
"Last Day",
];
static Map<String, List<String>> subHeadersTitleList = {
"Today": ["Target", "Sales", "%"],
"Last Day": ["Target", "Sales", "%"],
};
static List<String> rightTableRowData = [
"5023",
"5000",
"99",
"8000",
"8000",
"100",
];
static int noColumn = ReportTableUtils.countTotalHeaderItem(
mainHeadersTitle, subHeadersTitleList);
static List<TableDataPlaceHolder> rowData = List.generate(20, (index) {
return TableDataPlaceHolder(
leftCellData: LeftCellDataModel(
itemId: index + 1,
itemDisplayText: "Outlet ${index + 1}",
callback: () {
print("Tapped on Outlet ${index + 1}");
},
),
leftCellItemColor:
(index + 1) % 5 == 0 ? Colors.red : ReportTableUtils.cellTextColor,
rightCellsItemColor:
(index + 1) % 5 == 0 ? Colors.red : ReportTableUtils.cellTextColor,
leftCellItemBackgroundColor: Colors.white,
rightCellsItemBackgroundColor: Colors.white,
leftCellItemIsBold: (index + 1) % 5 == 0,
rightCellValues: List.generate(TableDataSource.noColumn, (i) {
return (i < rightTableRowData.length)
? rightTableRowData[i]
: "N/A"; //this is Right Table Row data
}),
);
});
ReportTableModel table = ReportTableModel(
leftPortionHeader: "Channel",
leftPortionSubHeader: "Region",
rightPortionHeadersTitle: mainHeadersTitle,
rightPortionSubHeadersTitleList: subHeadersTitleList,
rowItems: rowData,
);
ReportTableModel getTableModel() => table;
}
void main() {
runApp(const MaterialData());
}
class MaterialData extends StatelessWidget {
const MaterialData({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Scaffold(
appBar: AppBar(
title: Text("Report Table Builder"),
centerTitle: true,
),
body: Center(
child: ReportTableBuilder(
headerHeight: ReportTableUtils.headerHeight,
subHeadersHeight: ReportTableUtils.subHeadersHeight,
cellWidth: ReportTableUtils.columnCellWidth,
cellHeight: ReportTableUtils.cellHeight,
stickyColumnWidth: ReportTableUtils.stickyColumnWidth,
tableModel: TableDataSource().getTableModel(),
itemTextSize: 12,
),
),
),
);
}
}