nrb 1.0.5
nrb: ^1.0.5 copied to clipboard
A Flutter package for building structured and customizable report layouts.
📊 nrb #
A customizable and responsive Flutter table widget builder designed for complex, nested headers and dynamic data visualization. Ideal for enterprise dashboards, inventory tracking, or structured report UIs.

✨ Features #
- Build highly structured tables with:
- Main and sub headers
- Sticky left-side columns (like Excel-style freeze panes)
- Scrollable content region
- Generic DataType TextCell with click feature
- Dynamic column groupings with nested data structure
- Smooth horizontal and vertical scrolling
- Fully customizable header and cell styles
- Easy data binding via
ReportMaker
🚀 Getting Started #
To integrate nrb into your Flutter project:
1. Add dependency #
dependencies:
nrb: ^[latest_version]
2. Prepare main to include the report layout #
import 'package:flutter/material.dart';
import 'package:nrb/nrb/header_cell.dart';
import 'package:nrb/nrb/sub_header_cell.dart';
import 'package:nrb/nrb/text_cell.dart';
import 'package:nrb/report_maker.dart';
void main() {
runApp(MyReportBuilderApp());
}
class MyReportBuilderApp extends StatefulWidget {
const MyReportBuilderApp({super.key});
@override
State<MyReportBuilderApp> createState() => _MyReportBuilderAppState();
}
class _MyReportBuilderAppState extends State<MyReportBuilderApp> {
final List<HeaderCell> headers = [
HeaderCell(text: "Secondary", span: 3, ),
HeaderCell(text: "Primary", span: 3,),
];
final List<SubHeaderCell> subHeaders = [
SubHeaderCell(text: "Target", ),
SubHeaderCell(text: "Actual"),
SubHeaderCell(text: "%"),
SubHeaderCell(text: "Target"),
SubHeaderCell(text: "Actual"),
SubHeaderCell(text: "%"),
];
final leftColumns = [
TextCell(textContent: "01-Nov-2025", backgroundColor: Colors.blue[200], textColor: Colors.black,),
TextCell(textContent: "02-Nov-2025", backgroundColor: Colors.blue[200], textColor: Colors.black),
TextCell(textContent: "03-Nov-2025", backgroundColor: Colors.blue[200], textColor: Colors.black),
TextCell(textContent: "04-Nov-2025", backgroundColor: Colors.blue[200], textColor: Colors.black),
];
final tableData = [
[
TextCell(textContent: "10,99,493", textAlignment: Alignment.centerRight),
TextCell(textContent: "9,34,839", textAlignment: Alignment.centerRight),
TextCell(textContent: "85.07%"),
TextCell(textContent: "10,99,493", textAlignment: Alignment.centerRight),
TextCell(textContent: "9,34,839", textAlignment: Alignment.centerRight),
TextCell(textContent: "85.07%"),
],
[
TextCell(textContent: "10,99,493", textAlignment: Alignment.centerRight),
TextCell(textContent: "9,34,839", textAlignment: Alignment.centerRight),
TextCell(textContent: "85.07%"),
TextCell(textContent: "10,99,493", textAlignment: Alignment.centerRight),
TextCell(textContent: "9,34,839", textAlignment: Alignment.centerRight),
TextCell(textContent: "85.07%"),
],
[
TextCell(textContent: "10,99,493", textAlignment: Alignment.centerRight),
TextCell(textContent: "9,34,839", textAlignment: Alignment.centerRight),
TextCell(textContent: "85.07%"),
TextCell(textContent: "10,99,493", textAlignment: Alignment.centerRight),
TextCell(textContent: "9,34,839", textAlignment: Alignment.centerRight),
TextCell(textContent: "85.07%"),
],
[
TextCell(textContent: "10,99,493", textAlignment: Alignment.centerRight),
TextCell(textContent: "9,34,839", textAlignment: Alignment.centerRight),
TextCell(textContent: "85.07%"),
TextCell(textContent: "10,99,493", textAlignment: Alignment.centerRight),
TextCell(textContent: "9,34,839", textAlignment: Alignment.centerRight),
TextCell(textContent: "85.07%"),
],
];
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData(primarySwatch: Colors.blue),
home: Scaffold(
appBar: AppBar(title: const Text('Report Builder')),
body: ReportMaker(
headers: headers,
subHeaders: subHeaders,
leftColumn: leftColumns,
tableData: tableData,
stickyHeaderLabel: "Tran",
),
),
);
}
}
📂 Example Output #

📄 License #
© 2026 Mehedi Hasan & Fahad Mia
This software is licensed under a custom license. Usage is permitted in personal and commercial projects, but:
- ❌ No redistribution or resale
- ❌ No modification of the source
- ✅ Attribution required
See LICENSE file for full terms.
📬 Support & Contributions #
For issues, feature requests, or contributions, feel free to open a GitHub Issue.