nrb 4.0.7 copy "nrb: ^4.0.7" to clipboard
nrb: ^4.0.7 copied to clipboard

A highly responsive Flutter table and report builder for complex nested headers, editable data grids, and premium Excel/PDF exports.

πŸ“Š 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.

11
likes
0
points
263
downloads

Publisher

verified publisherinnovatenestlabs.com

Weekly Downloads

A highly responsive Flutter table and report builder for complex nested headers, editable data grids, and premium Excel/PDF exports.

Homepage
Repository (GitHub)
View/report issues

Topics

#tables #reports #excel #json

License

unknown (license)

Dependencies

cross_file, flutter, path_provider, share_plus, web

More

Packages that depend on nrb