πŸ“Š nrb (Nexora Report Builder)

A customizable and highly responsive Flutter data grid and report builder designed for complex nested headers, dynamic data visualization, and professional exports.

Ideal for enterprise dashboards, inventory tracking, financial reports, or structured data-entry UIs.

πŸš€ Try it live in your browser: Interactive Web Demo


πŸ“Έ Capabilities at a Glance

Editable Data Grids
nrb Demo
Premium Exporting
nrb Export Demo

✨ Core Features

  • πŸ“± Fully Responsive: Columns auto-scale and expand to fill screen space based on content.
  • πŸ“Œ Freeze Panes: Sticky left-side columns and complex multi-row nested headers.
  • ✍️ Editable Grids: Mix TextCell with interactive TextFieldCell for data-entry forms.
  • πŸ’° Smart Formatting: Advanced NRBNumberFormatter for International and Indian currencies.
  • πŸ“ Dynamic Resizing: Drag column edges to resize or double-click to auto-fit.
  • πŸ“₯ Native PDF Export (FREE): Generate professional multi-page PDF reports locallyβ€”no server, no cost.
  • πŸ“₯ Premium Export (PRO): Instant high-performance backend exports to Excel (.xlsx), Word (.docx), and PDF.

πŸš€ Getting Started

Add the dependency to your pubspec.yaml:

dependencies:
  nrb: ^4.0.7

πŸ’‘ Use Case 1: Free Local PDF Export

Perfect for offline apps or users who want free, professional PDF reports. Simply leave the apiKey blank.

Show Code Snippet (Free Native PDF)
NrbTableEngine(
  reportName: "Local_Monthly_Report",
  enableDownload: true,
  apiKey: "",                       // Triggers Free Local Engine
  companyName: "Your Business Ltd", // Optional Branding
  companyAddress: "City, Country",
  headers: [ /* Your Headers */ ],
  tableData: [ /* Your Data */ ],
)

πŸ’‘ Use Case 2: Premium Multi-Format Export

Unlock the power of Excel and Word exports via our high-speed cloud engine.

Show Code Snippet (Premium Export)
NrbTableEngine(
  packageName: "com.your.app",       // Registered Package Name
  apiKey: "YOUR_PREMIUM_API_KEY",    // Get from Nexora Dashboard
  enableDownload: true,
  headers: [ /* Your Headers */ ],
  tableData: [ /* Your Data */ ],
)

πŸ“Š Beautiful Native Charts

nrb includes a suite of physics-based, animated charts optimized for report dashboards.

View Supported Chart Types

Dashboard

  • Multi-Line Chart: Interactive trends with tooltips.
  • Segmented Gauge: KPI achievement visualization.
  • Scatter Plot: Data correlation tracking.
  • Histogram & Pie Charts: Distribution analysis.
  • Donut Cards & Metric Cards: Compact summary widgets.

πŸ’Ύ Standalone JSON β†’ Excel

You can now export ordinary API JSON to Excel without creating an NrbTableEngine report first. The package reuses the same registered package name, API key, feature lookup, and InnovateNestLabs report-processing server used by the existing premium export flow.

Return the Excel binary

import 'dart:typed_data';
import 'package:nrb/nrb.dart';

final Uint8List bytes = await NRBJsonToExcel(
  apiResponseJson,
  packageName: 'com.your.app',
  apiKey: 'YOUR_PREMIUM_API_KEY',
  fileName: 'customer_report',
);

NRBJsonToExcel(...) returns the generated .xlsx bytes, so the caller can save, upload, share, or process the file independently.

Use Flutter 3.32 / Dart 3.8 or newer. Excel generation requires a registered packageName, an API key, and an enabled Excel/XLSX subscription feature. The existing NrbJsonToExcel.convert(...) method remains available and delegates to the same implementation; NRBJsonToExcel(...) is the convenience entry point. Existing NrbTableEngine table/report exports remain available.

Common Download floating action button

Scaffold(
  body: YourExistingScreen(),
  floatingActionButton: NRBJsonToExcelButton(
    json: apiResponseJson,
    packageName: 'com.your.app',
    apiKey: 'YOUR_PREMIUM_API_KEY',
    fileName: 'customer_report',
  ),
);

If your API response keeps the row list under a non-standard key, specify it explicitly:

NRBJsonToExcelButton(
  json: response,
  dataKey: 'customerList',
  packageName: 'com.your.app',
  apiKey: 'YOUR_PREMIUM_API_KEY',
)

The binary API accepts the same dataKey: 'customerList' argument. Without it, the converter checks data, items, results, records, and rows, then the first list of objects under another key. Otherwise, the input map becomes one row. An explicit dataKey must exist and contain a list.

Nested JSON objects become dot-notation columns (for example, customer.name). Headers include keys from every row in first-seen order. Missing/null fields become empty cells; arrays and empty nested objects become JSON text. Primitive or mixed row lists use one value column. An empty object or collection exports a No Data header and No data available row. Strings, booleans, finite numbers, Unicode, and Bangla text are supported.

The API propagates network/server errors. Invalid JSON values, cycles, nesting deeper than 100 levels, and colliding dot-notation fields throw FormatException. Blank credentials or an invalid dataKey throw ArgumentError. Empty/non-ZIP server responses are rejected. Callers of the binary API should handle errors with try/catch.

The button prevents repeated taps while preparing the file and supports onCompleted / onError callbacks. Completion means the native file was saved or the browser download was started; browsers cannot confirm that a user kept the file. Callbacks are suppressed after the widget is disposed. Filenames are sanitized and receive exactly one .xlsx extension.

Native downloads use the desktop Downloads folder or app documents. Android first attempts public Downloads and falls back to app storage if scoped storage denies the write. Web downloads use the browser's download flow. Applications should present the returned save location or the button's success message to users.


πŸ›  Advanced Customization

Number Formatting
TextCell(
  itemContent: "1099493.5",
  isAmount: true,
  numberFormatType: CellNumberFormat.indian, // 10,99,493.50
  roundTo: 2,
)
Complex Headers (ColSpan/RowSpan)
headers: [
  [
    NrbHeaderCell(text: "Group A", colSpan: 2, backgroundColor: Colors.blue),
    NrbHeaderCell(text: "Group B", colSpan: 3, backgroundColor: Colors.green),
  ],
  [
    NrbHeaderCell(text: "Sub 1"), NrbHeaderCell(text: "Sub 2"),
    NrbHeaderCell(text: "Sub 3"), NrbHeaderCell(text: "Sub 4"), NrbHeaderCell(text: "Sub 5"),
  ]
]

πŸ“‚ Example Output

All In One


πŸ“„ License

Β© 2025-2026 Innovate Nest Labs. Released under the Innovate Nest Labs Custom License. Commercial integration is permitted subject to the terms in the LICENSE file.


πŸ“¬ Support

Found a bug or need a feature? Open a GitHub Issue.

Libraries

nrb
nrb/enum/cell_number_format
nrb/enum/number_style
nrb/enum/round_mode
nrb/graphs/nrb_bar_chart
nrb/graphs/nrb_combo_chart
nrb/graphs/nrb_donut_chart
nrb/graphs/nrb_gauge_chart
nrb/graphs/nrb_histogram
nrb/graphs/nrb_line_chart
nrb/graphs/nrb_metric_card
nrb/graphs/nrb_multi_bar_chart
nrb/graphs/nrb_multi_donut_chart
nrb/graphs/nrb_multi_line_chart
nrb/graphs/nrb_pie_chart
nrb/graphs/nrb_scatter_plot
nrb/graphs/nrb_stacked_bar_chart
nrb/graphs/nrb_trend_card
nrb/header_cell
nrb/json_to_excel/nrb_excel_file_name
nrb/json_to_excel/nrb_json_excel_file_downloader
nrb/json_to_excel/nrb_json_excel_file_downloader_io
nrb/json_to_excel/nrb_json_excel_file_downloader_stub
nrb/json_to_excel/nrb_json_excel_file_downloader_web
nrb/json_to_excel/nrb_json_to_excel
nrb/json_to_excel/nrb_json_to_excel_button
nrb/nrb_custom_widget_cell
nrb/nrb_header_cell
nrb/nrb_table_engine_builder
nrb/report_cell
nrb/report_controller
nrb/report_design_builder
nrb/sub_header_cell
nrb/text_cell
nrb/text_field_cell
nrb/utils/native_file_saver
nrb/utils/network/nrb_endpoints
nrb/utils/network/nrb_http_exception
nrb/utils/network/nrb_network_client
nrb/utils/network/nrb_network_client_io
nrb/utils/network/nrb_network_client_stub
nrb/utils/network/nrb_network_client_web
nrb/utils/nrb_exporter
nrb/utils/nrb_native_pdf_generator
nrb/utils/nrb_number_formatter
nrb/utils/nrb_table_downloader
nrb/utils/nrb_table_downloader_io
nrb/utils/nrb_table_downloader_stub
nrb/utils/nrb_table_downloader_web
nrb/utils/nrb_table_exporter
nrb/utils/nrb_toast
nrb/utils/report_downloader
nrb/utils/report_downloader_io
nrb/utils/report_downloader_stub
nrb/utils/report_downloader_web
nrb_table_engine
report_maker