nrb 1.0.5 copy "nrb: ^1.0.5" to clipboard
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.


Demo Table


✨ 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 #

Table 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.

4
likes
130
points
162
downloads

Publisher

unverified uploader

Weekly Downloads

A Flutter package for building structured and customizable report layouts.

Repository (GitHub)
View/report issues

Documentation

API reference

License

unknown (license)

Dependencies

flutter

More

Packages that depend on nrb