If you have ever been tasked with building an enterprise dashboard, an inventory tracker, or a financial report in Flutter, you already know the struggle.
Flutterβs built-in DataTable and Table widgets are fantastic for simple lists. But the moment your client asks for nested sub-headers, sticky "freeze-pane" columns, inline editing, and PDF/Excel exports, you are usually looking at weeks of custom UI architecture.
I got frustrated dealing with this exact problem, so I built a robust solution: nrb (Nexora Report Builder).
What is nrb?
nrb is a customizable, highly responsive Flutter table widget builder designed specifically for complex data visualization and structured data-entry UIs.
Here is a breakdown of what it handles out of the box:
π Complex Nested Headers: Build top-level main headers with multiple sub-headers underneath, plus sticky left-side columns that stay locked while scrolling horizontally.
π± Fully Responsive & Resizable: Columns auto-measure their content (wrap_content) to fill available space. Users can even double-click edges to auto-fit or drag to manually resize columns.
βοΈ Editable Data Grids: Mix static TextCells with interactive TextFieldCells. This turns a static report into a massive, scrollable data-entry form.
π Instant Data Extraction: Wrap your table with a ReportController to extract all grid data instantly into a 2D array via a Submit action.
π° Built-in Number Formatting: Easily format numbers with International or Indian comma separation, along with granular rounding rules using the built-in NRBNumberFormatter.
The Superpower: Native PDF, Excel, & Word Exports π₯
Building the UI is only half the battle; enterprise users always want to download their data.
nrb comes with a built-in, interactive Floating Action Button (FAB) that triggers backend-driven exports of your perfectly formatted grids to Excel (.xlsx), PDF, and Word. It even integrates directly with the device's native sharing dialogs (via share_plus).
(Note: The UI package is open-source under a custom license, while the file generation utilizes the premium Innovate Nest Labs API. However, we have included a free demo tier so you can test the export functionality immediately!)
How to use it
- Add the dependency:
YAML
dependencies:
nrb: ^[latest_version]
- Build your grid: Setting up a complex table is as simple as defining your headers and passing your data matrix to the ReportMaker widget.
Dart
`import 'package:flutter/material.dart';
import 'package:nrb/nrb.dart';
class EnterpriseDashboard extends StatelessWidget {
final ReportController _reportController = ReportController();
final List headers = [
HeaderCell(text: "Financial Overview", span: 3, backgroundColor: Colors.green),
];
final List subHeaders = [
SubHeaderCell(text: "Target", backgroundColor: Colors.green),
SubHeaderCell(text: "Actual", backgroundColor: Colors.green),
SubHeaderCell(text: "Growth %", backgroundColor: Colors.green),
];
final leftColumns = [
TextCell(itemContent: "Q1 - 2026", backgroundColor: Colors.blue[200]),
TextCell(itemContent: "Q2 - 2026", backgroundColor: Colors.blue[200]),
];
final tableData = [
[
TextCell(itemContent: "1500000", isAmount: true, numberFormatType: CellNumberFormat.indian),
TextCell(itemContent: "1250000", isAmount: true, numberFormatType: CellNumberFormat.indian),
TextFieldCell(initialValue: "83.33%"), // Editable!
],
// ... more rows
];
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('Enterprise Dashboard')),
body: ReportMaker(
headers: headers,
subHeaders: subHeaders,
leftColumn: leftColumns,
tableData: tableData,
stickyHeaderLabel: "Quarter",
// --- EXPORT FEATURES ---
controller: _reportController,
enableDownload: true,
showDownloadFloatingButton: true,
// π‘ Use these exact credentials to test the Free Export Demo:
packageName: "com.innovatenestlabs.demoapp",
apiKey: "",
reportName: "Financial Report",
),
);
}
}`
Try it out!
If you are building dashboards, financial apps, or any software that requires heavy data visualization, drop nrb into your project and let it handle the heavy lifting.
π Check out the full package on pub.dev: [https://pub.dev/packages/nrb]
Top comments (0)