<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Innovate Nest Labs</title>
    <description>The latest articles on Forem by Innovate Nest Labs (@innovatenestlabs).</description>
    <link>https://forem.com/innovatenestlabs</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3827920%2Fb03524d9-9117-4bdb-8c43-962d29585bf5.png</url>
      <title>Forem: Innovate Nest Labs</title>
      <link>https://forem.com/innovatenestlabs</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/innovatenestlabs"/>
    <language>en</language>
    <item>
      <title>Build Enterprise-Grade Flutter Dashboards in Minutes 🚀 (What’s New in NRB 3.0.3)</title>
      <dc:creator>Innovate Nest Labs</dc:creator>
      <pubDate>Mon, 06 Apr 2026 17:42:49 +0000</pubDate>
      <link>https://forem.com/innovatenestlabs/build-enterprise-grade-flutter-dashboards-in-minutes-whats-new-in-nrb-303-4pgc</link>
      <guid>https://forem.com/innovatenestlabs/build-enterprise-grade-flutter-dashboards-in-minutes-whats-new-in-nrb-303-4pgc</guid>
      <description>&lt;p&gt;If you’ve ever tried to build a complex, responsive data table in Flutter, you know the struggle. &lt;/p&gt;

&lt;p&gt;Wrestling with &lt;code&gt;DataTable&lt;/code&gt; to get sticky headers, dynamic column sizing, horizontal scrolling, and pagination can quickly turn a simple admin panel into a multi-day headache. And when your client asks, &lt;em&gt;"Can we add a pie chart and an export-to-PDF button?"&lt;/em&gt;, you usually have to hunt down three different heavy libraries just to make it work.&lt;/p&gt;

&lt;p&gt;That’s exactly why we built &lt;strong&gt;NRB (Nexora Report Builder)&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Today, we are thrilled to announce &lt;strong&gt;NRB Version 3.0.3&lt;/strong&gt;, our biggest update yet, turning &lt;code&gt;nrb&lt;/code&gt; from a powerful table builder into a complete &lt;strong&gt;Enterprise Dashboard UI Toolkit&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  🌟 The Big Feature: Inject ANY Custom Widget into your Tables
&lt;/h2&gt;

&lt;p&gt;Since day one, developers have loved &lt;code&gt;nrb&lt;/code&gt; for its ease of use when rendering text and numbers. But a modern dashboard needs more than just text. It needs action buttons, colorful status badges, user avatars, and progress bars.&lt;/p&gt;

&lt;p&gt;In &lt;strong&gt;v3.0.3&lt;/strong&gt;, we are introducing the &lt;code&gt;NrbCustomWidgetCell&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;You are no longer limited to strings. You can now pass &lt;strong&gt;any Flutter widget&lt;/strong&gt; directly into your table grid without breaking the responsive layout, sticky headers, or export functionality.&lt;/p&gt;

&lt;h3&gt;
  
  
  💻 Example: Adding Status Badges and Action Buttons
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight dart"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Building a row in NRB 3.0.3&lt;/span&gt;
&lt;span class="kt"&gt;List&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;ReportCell&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;_buildRow&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Employee&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="n"&gt;TextCell&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;itemContent:&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="n"&gt;TextCell&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;itemContent:&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;department&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;

    &lt;span class="c1"&gt;// 🔥 NEW: Inject a custom Flutter Widget for the Status!&lt;/span&gt;
    &lt;span class="n"&gt;NrbCustomWidgetCell&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
      &lt;span class="nl"&gt;exportText:&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;status&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// Fallback text for PDF/Excel exports&lt;/span&gt;
      &lt;span class="nl"&gt;child:&lt;/span&gt; &lt;span class="n"&gt;Container&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="nl"&gt;padding:&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="n"&gt;EdgeInsets&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;symmetric&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;horizontal:&lt;/span&gt; &lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nl"&gt;vertical:&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="nl"&gt;decoration:&lt;/span&gt; &lt;span class="n"&gt;BoxDecoration&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
          &lt;span class="nl"&gt;color:&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;isActive&lt;/span&gt; &lt;span class="o"&gt;?&lt;/span&gt; &lt;span class="n"&gt;Colors&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;green&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;shade100&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Colors&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;red&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;shade100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="nl"&gt;borderRadius:&lt;/span&gt; &lt;span class="n"&gt;BorderRadius&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;circular&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="nl"&gt;child:&lt;/span&gt; &lt;span class="n"&gt;Text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
          &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;status&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="nl"&gt;style:&lt;/span&gt; &lt;span class="n"&gt;TextStyle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;color:&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;isActive&lt;/span&gt; &lt;span class="o"&gt;?&lt;/span&gt; &lt;span class="n"&gt;Colors&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;green&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Colors&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;red&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="p"&gt;),&lt;/span&gt;
      &lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="p"&gt;),&lt;/span&gt;

    &lt;span class="c1"&gt;// 🔥 NEW: Inject a Delete Icon Button!&lt;/span&gt;
    &lt;span class="n"&gt;NrbCustomWidgetCell&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
      &lt;span class="nl"&gt;exportText:&lt;/span&gt; &lt;span class="s"&gt;"Action"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="nl"&gt;child:&lt;/span&gt; &lt;span class="n"&gt;IconButton&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="nl"&gt;icon:&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="n"&gt;Icon&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Icons&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;delete&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nl"&gt;color:&lt;/span&gt; &lt;span class="n"&gt;Colors&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;red&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="nl"&gt;onPressed:&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;deleteUser&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
      &lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Note: We even included an &lt;code&gt;exportText&lt;/code&gt; property! When your user downloads the table as an Excel or PDF file, &lt;code&gt;nrb&lt;/code&gt; knows exactly what text to print in place of your custom UI widget.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  📈 Stop Importing Heavy Chart Libraries: New Analytics Widgets
&lt;/h2&gt;

&lt;p&gt;Admin panels aren't just tables; they are visual stories. To save you from bloating your app with massive third-party charting dependencies, &lt;code&gt;nrb&lt;/code&gt; now ships with beautiful, animated, physics-based charts built natively in Flutter.&lt;/p&gt;

&lt;p&gt;With this update, we’ve added highly requested enterprise charts:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. NrbComboChart (Dual-Axis Mastery)
&lt;/h3&gt;

&lt;p&gt;Need to compare revenue (currency) against total active users (volume) over time? The Combo Chart lets you overlay a sleek bezier line chart directly on top of a bar chart, complete with dual Y-axes and interactive tooltips.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. NrbMultiDonutChart
&lt;/h3&gt;

&lt;p&gt;A massive upgrade from standard pie charts. Create beautiful, multi-segmented rings with automatically generated side and bottom legends. Just pass your data and set &lt;code&gt;showSideLegend: true&lt;/code&gt;!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight dart"&gt;&lt;code&gt;&lt;span class="n"&gt;NrbMultiDonutChart&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="nl"&gt;size:&lt;/span&gt; &lt;span class="mi"&gt;180&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nl"&gt;strokeWidth:&lt;/span&gt; &lt;span class="mf"&gt;35.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nl"&gt;showLabels:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// Shows % inside the ring!&lt;/span&gt;
  &lt;span class="nl"&gt;showSideLegend:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// Auto-generates a clean UI legend&lt;/span&gt;
  &lt;span class="nl"&gt;slices:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="n"&gt;NrbPieSlice&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;value:&lt;/span&gt; &lt;span class="mf"&gt;55.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nl"&gt;color:&lt;/span&gt; &lt;span class="n"&gt;Colors&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;blue&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nl"&gt;label:&lt;/span&gt; &lt;span class="s"&gt;"Web Apps"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="n"&gt;NrbPieSlice&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;value:&lt;/span&gt; &lt;span class="mf"&gt;35.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nl"&gt;color:&lt;/span&gt; &lt;span class="n"&gt;Colors&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;green&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nl"&gt;label:&lt;/span&gt; &lt;span class="s"&gt;"Mobile Apps"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="nl"&gt;centerContent:&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="n"&gt;Text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"90"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nl"&gt;style:&lt;/span&gt; &lt;span class="n"&gt;TextStyle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;fontSize:&lt;/span&gt; &lt;span class="mi"&gt;24&lt;/span&gt;&lt;span class="p"&gt;)),&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. NrbStackedBarChart
&lt;/h3&gt;

&lt;p&gt;Perfect for visualizing budget breakdowns, team allocations, or nested categories over time.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Interactive Trend Cards
&lt;/h3&gt;

&lt;p&gt;Dashboards need top-level KPIs. Use the new &lt;code&gt;NrbTrendCard&lt;/code&gt; to display key metrics. It includes built-in up/down trend arrows and a smooth "bounce" animation when tapped.&lt;/p&gt;




&lt;h2&gt;
  
  
  🛠️ Why Developers Love NRB
&lt;/h2&gt;

&lt;p&gt;If you are new to the Nexora Report Builder, here is what you get out of the box:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;📱 Truly Responsive:&lt;/strong&gt; Columns auto-measure their content (&lt;code&gt;wrap_content&lt;/code&gt;) and expand proportionally to fill available screen space.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;📌 Complex Nested Headers:&lt;/strong&gt; Build main headers, sub-headers, and sticky left-side columns (like Excel-style freeze panes) in minutes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;💰 Built-in Number Formatting:&lt;/strong&gt; Automatically format raw numbers into International or Indian comma separation schemas (&lt;code&gt;10,99,493.50&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;📥 Premium Native Exporting:&lt;/strong&gt; Instantly download your exact table grid to &lt;strong&gt;PDF, Excel (.xlsx), or Word&lt;/strong&gt;, or trigger the native OS share dialog.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🚀 Get Started Today
&lt;/h2&gt;

&lt;p&gt;Drop the old, rigid &lt;code&gt;DataTable&lt;/code&gt;. Give your users the smooth, enterprise-grade reporting experience they deserve. &lt;/p&gt;

&lt;p&gt;📦 &lt;strong&gt;Install via pub.dev:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;flutter pub add nrb
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🔗 &lt;strong&gt;Check out the interactive Web Demo:&lt;/strong&gt; &lt;a href="https://innovatenestlabs.com/products/nrb/demo/" rel="noopener noreferrer"&gt;nrb Demo Live&lt;/a&gt;&lt;br&gt;&lt;br&gt;
📖 &lt;strong&gt;Read the Docs:&lt;/strong&gt; &lt;a href="https://pub.dev/packages/nrb" rel="noopener noreferrer"&gt;pub.dev/packages/nrb&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Have feature requests or feedback? Let us know in the comments below or open an issue on our GitHub! Happy coding!&lt;/em&gt; 💙💻&lt;/p&gt;

</description>
      <category>flutter</category>
      <category>dart</category>
      <category>ui</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Building Complex "Excel-Style" Dashboards in Flutter: Tables, Charts, and Exports</title>
      <dc:creator>Innovate Nest Labs</dc:creator>
      <pubDate>Wed, 01 Apr 2026 12:41:51 +0000</pubDate>
      <link>https://forem.com/innovatenestlabs/building-complex-excel-style-dashboards-in-flutter-tables-charts-and-exports-10jb</link>
      <guid>https://forem.com/innovatenestlabs/building-complex-excel-style-dashboards-in-flutter-tables-charts-and-exports-10jb</guid>
      <description>&lt;p&gt;Live Demo: &lt;a href="https://innovatenestlabs.com/products/nrb/demo/" rel="noopener noreferrer"&gt;NRB_DEMO_INL&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When you transition from building consumer-facing Flutter apps to enterprise software (ERPs, CRM, Financial Tools), you quickly run into a major roadblock: heavy data visualization.&lt;/p&gt;

&lt;p&gt;Clients inevitably ask for "Excel-style" features. They want massive datasets, frozen left columns (sticky headers), nested sub-headers, editable cells, and a beautiful KPI dashboard sitting right on top of it.&lt;/p&gt;

&lt;p&gt;If you've tried building this, you know the pain. You install one package for charts, another for exporting, and then spend a week writing custom ScrollControllers for your tables.&lt;/p&gt;

&lt;p&gt;After spending weeks syncing controllers on a recent project, I realized the community needed a better way.&lt;/p&gt;

&lt;p&gt;Enter nrb (Nexora Report Builder)&lt;/p&gt;

&lt;p&gt;I built the nrb package to be an all-in-one layout engine for heavy data grids and dashboards.&lt;/p&gt;

&lt;p&gt;Pub.dev: &lt;a href="https://pub.dev/packages/nrb" rel="noopener noreferrer"&gt;https://pub.dev/packages/nrb&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Template Source Code: &lt;a href="https://github.com/mehedisoftdev/nrb_example_template.git" rel="noopener noreferrer"&gt;https://github.com/mehedisoftdev/nrb_example_template.git&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Graph &amp;amp; Charts&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjgu7r5bjf8wo2zs3ubgi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjgu7r5bjf8wo2zs3ubgi.png" alt=" " width="800" height="388"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Export Features&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjy5yk5mi2nirtp9dx1m7.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjy5yk5mi2nirtp9dx1m7.gif" alt=" " width="378" height="850"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Nested Header Table&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff5c3vuqwhc4dctsrzg3l.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff5c3vuqwhc4dctsrzg3l.gif" alt=" " width="378" height="672"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Solving the Layout Nightmare&lt;br&gt;
Here is what nrb handles out of the box without needing extra dependencies:&lt;/p&gt;

&lt;p&gt;True Sticky Columns: Keep your row identifiers locked on the left while the user scrolls horizontally through massive datasets. No lag.&lt;/p&gt;

&lt;p&gt;Native Animated Charts: Enterprise dashboards need charts. nrb includes physics-animated native charts (Segmented Gauges, Multi-line, Histograms, Scatter plots) so you don't need to install massive graphing libraries.&lt;/p&gt;

&lt;p&gt;Editable Grids &amp;amp; Exports: It supports TextFieldCells, turning a static report into an editable form that can be extracted to Excel, PDF, or Word with one method call using the premium API.&lt;/p&gt;

&lt;p&gt;Get Started in 5 Minutes&lt;br&gt;
I believe the best way to learn a package is to read a working project. I've published a completely free, open-source Enterprise Dashboard Template using nrb.&lt;/p&gt;

&lt;p&gt;You can watch the video walkthrough of the code here: &lt;a href="https://youtu.be/dppfUyO7vW8" rel="noopener noreferrer"&gt;https://youtu.be/dppfUyO7vW8&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Stop fighting with custom scroll controllers and bloated pubspec files. Grab the template from GitHub, and if it saves you a headache on your next project, consider leaving a like on pub.dev!&lt;br&gt;
Official link: &lt;a href="https://www.innovatenestlabs.com/" rel="noopener noreferrer"&gt;Innovate Nest Labs&lt;/a&gt;&lt;/p&gt;

</description>
      <category>fluttercomplexdatatable</category>
      <category>flutterstickyheaders</category>
      <category>flutterdashboardcharts</category>
    </item>
    <item>
      <title>Building Complex, Excel-Style Data Tables with PDF &amp; Excel Exports in Flutter 📊</title>
      <dc:creator>Innovate Nest Labs</dc:creator>
      <pubDate>Mon, 16 Mar 2026 18:41:08 +0000</pubDate>
      <link>https://forem.com/innovatenestlabs/building-complex-excel-style-data-tables-with-pdf-excel-exports-in-flutter-24oe</link>
      <guid>https://forem.com/innovatenestlabs/building-complex-excel-style-data-tables-with-pdf-excel-exports-in-flutter-24oe</guid>
      <description>&lt;h2&gt;
  
  
  Live Demo: &lt;a href="https://innovatenestlabs.com/products/nrb/demo/" rel="noopener noreferrer"&gt;NRB_DEMO_INL&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;Flutter’s built-in &lt;code&gt;DataTable&lt;/code&gt; and &lt;code&gt;Table&lt;/code&gt; 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.&lt;/p&gt;

&lt;p&gt;I got frustrated dealing with this exact problem, so I built a robust solution: &lt;strong&gt;nrb&lt;/strong&gt; (Nexora Report Builder).&lt;/p&gt;

&lt;h2&gt;
  
  
  What is nrb?
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;nrb&lt;/code&gt; is a customizable, highly responsive Flutter table widget builder designed specifically for complex data visualization and structured data-entry UIs.&lt;/p&gt;

&lt;p&gt;Here is a breakdown of what it handles out of the box:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;📌 &lt;strong&gt;Complex Nested Headers:&lt;/strong&gt; Build top-level main headers with multiple sub-headers underneath, plus sticky left-side columns that stay locked while scrolling horizontally.&lt;/li&gt;
&lt;li&gt;📱 &lt;strong&gt;Fully Responsive &amp;amp; Resizable:&lt;/strong&gt; Columns auto-measure their content (&lt;code&gt;wrap_content&lt;/code&gt;) to fill available space. Users can even double-click edges to auto-fit or drag to manually resize columns.&lt;/li&gt;
&lt;li&gt;✍️ &lt;strong&gt;Editable Data Grids:&lt;/strong&gt; Mix static &lt;code&gt;TextCell&lt;/code&gt;s with interactive &lt;code&gt;TextFieldCell&lt;/code&gt;s. This turns a static report into a massive, scrollable data-entry form.&lt;/li&gt;
&lt;li&gt;🔄 &lt;strong&gt;Instant Data Extraction:&lt;/strong&gt; Wrap your table with a &lt;code&gt;ReportController&lt;/code&gt; to extract all grid data instantly into a 2D array via a Submit action.&lt;/li&gt;
&lt;li&gt;💰 &lt;strong&gt;Built-in Number Formatting:&lt;/strong&gt; Easily format numbers with International or Indian comma separation, along with granular rounding rules using the built-in &lt;code&gt;NRBNumberFormatter&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Superpower: Native PDF, Excel, &amp;amp; Word Exports 📥
&lt;/h2&gt;

&lt;p&gt;Building the UI is only half the battle; enterprise users always want to download their data.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;nrb&lt;/code&gt; comes with a built-in, interactive Floating Action Button (FAB) that triggers backend-driven exports of your perfectly formatted grids to Excel (&lt;code&gt;.xlsx&lt;/code&gt;), PDF, and Word. It even integrates directly with the device's native sharing dialogs (via &lt;code&gt;share_plus&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;&lt;em&gt;(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!)&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How to use it
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Add the dependency:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;dependencies&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;nrb&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;^[latest_version]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Build your grid:
&lt;/h3&gt;

&lt;p&gt;Setting up a complex table is as simple as defining your headers and passing your data matrix to the &lt;code&gt;ReportMaker&lt;/code&gt; widget.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight dart"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="s"&gt;'package:flutter/material.dart'&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="s"&gt;'package:nrb/nrb.dart'&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;EnterpriseDashboard&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="n"&gt;StatelessWidget&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;final&lt;/span&gt; &lt;span class="n"&gt;ReportController&lt;/span&gt; &lt;span class="n"&gt;_reportController&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ReportController&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

  &lt;span class="kd"&gt;final&lt;/span&gt; &lt;span class="kt"&gt;List&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;HeaderCell&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;headers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="n"&gt;HeaderCell&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;text:&lt;/span&gt; &lt;span class="s"&gt;"Financial Overview"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nl"&gt;span:&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nl"&gt;backgroundColor:&lt;/span&gt; &lt;span class="n"&gt;Colors&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;green&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="p"&gt;];&lt;/span&gt;

  &lt;span class="kd"&gt;final&lt;/span&gt; &lt;span class="kt"&gt;List&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;SubHeaderCell&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;subHeaders&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="n"&gt;SubHeaderCell&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;text:&lt;/span&gt; &lt;span class="s"&gt;"Target"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nl"&gt;backgroundColor:&lt;/span&gt; &lt;span class="n"&gt;Colors&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;green&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="n"&gt;SubHeaderCell&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;text:&lt;/span&gt; &lt;span class="s"&gt;"Actual"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nl"&gt;backgroundColor:&lt;/span&gt; &lt;span class="n"&gt;Colors&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;green&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="n"&gt;SubHeaderCell&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;text:&lt;/span&gt; &lt;span class="s"&gt;"Growth %"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nl"&gt;backgroundColor:&lt;/span&gt; &lt;span class="n"&gt;Colors&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;green&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="p"&gt;];&lt;/span&gt;

  &lt;span class="kd"&gt;final&lt;/span&gt; &lt;span class="n"&gt;leftColumns&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="n"&gt;TextCell&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;itemContent:&lt;/span&gt; &lt;span class="s"&gt;"Q1 - 2026"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nl"&gt;backgroundColor:&lt;/span&gt; &lt;span class="n"&gt;Colors&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;blue&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;]),&lt;/span&gt;
    &lt;span class="n"&gt;TextCell&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;itemContent:&lt;/span&gt; &lt;span class="s"&gt;"Q2 - 2026"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nl"&gt;backgroundColor:&lt;/span&gt; &lt;span class="n"&gt;Colors&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;blue&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;]),&lt;/span&gt;
  &lt;span class="p"&gt;];&lt;/span&gt;

  &lt;span class="kd"&gt;final&lt;/span&gt; &lt;span class="n"&gt;tableData&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;[&lt;/span&gt;
      &lt;span class="n"&gt;TextCell&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;itemContent:&lt;/span&gt; &lt;span class="s"&gt;"1500000"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nl"&gt;isAmount:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nl"&gt;numberFormatType:&lt;/span&gt; &lt;span class="n"&gt;CellNumberFormat&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;indian&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
      &lt;span class="n"&gt;TextCell&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;itemContent:&lt;/span&gt; &lt;span class="s"&gt;"1250000"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nl"&gt;isAmount:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nl"&gt;numberFormatType:&lt;/span&gt; &lt;span class="n"&gt;CellNumberFormat&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;indian&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
      &lt;span class="n"&gt;TextFieldCell&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;initialValue:&lt;/span&gt; &lt;span class="s"&gt;"83.33%"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="c1"&gt;// Editable!&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="c1"&gt;// ... more rows&lt;/span&gt;
  &lt;span class="p"&gt;];&lt;/span&gt;

  &lt;span class="nd"&gt;@override&lt;/span&gt;
  &lt;span class="n"&gt;Widget&lt;/span&gt; &lt;span class="n"&gt;build&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;BuildContext&lt;/span&gt; &lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;Scaffold&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
      &lt;span class="nl"&gt;appBar:&lt;/span&gt; &lt;span class="n"&gt;AppBar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;title:&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="n"&gt;Text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'Enterprise Dashboard'&lt;/span&gt;&lt;span class="p"&gt;)),&lt;/span&gt;
      &lt;span class="nl"&gt;body:&lt;/span&gt; &lt;span class="n"&gt;ReportMaker&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="nl"&gt;headers:&lt;/span&gt; &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nl"&gt;subHeaders:&lt;/span&gt; &lt;span class="n"&gt;subHeaders&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nl"&gt;leftColumn:&lt;/span&gt; &lt;span class="n"&gt;leftColumns&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nl"&gt;tableData:&lt;/span&gt; &lt;span class="n"&gt;tableData&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nl"&gt;stickyHeaderLabel:&lt;/span&gt; &lt;span class="s"&gt;"Quarter"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;

        &lt;span class="c1"&gt;// --- EXPORT FEATURES ---&lt;/span&gt;
        &lt;span class="nl"&gt;controller:&lt;/span&gt; &lt;span class="n"&gt;_reportController&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nl"&gt;enableDownload:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;          
        &lt;span class="nl"&gt;showDownloadFloatingButton:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 

        &lt;span class="c1"&gt;// 💡 Use these exact credentials to test the Free Export Demo:&lt;/span&gt;
        &lt;span class="nl"&gt;packageName:&lt;/span&gt; &lt;span class="s"&gt;"com.innovatenestlabs.demoapp"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
        &lt;span class="nl"&gt;apiKey:&lt;/span&gt; &lt;span class="s"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
        &lt;span class="nl"&gt;reportName:&lt;/span&gt; &lt;span class="s"&gt;"Financial Report"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Try it out!
&lt;/h2&gt;

&lt;p&gt;If you are building dashboards, financial apps, or any software that requires heavy data visualization, drop &lt;code&gt;nrb&lt;/code&gt; into your project and let it handle the heavy lifting.&lt;/p&gt;

&lt;p&gt;🔗 &lt;strong&gt;Check out the full package on pub.dev:&lt;/strong&gt; &lt;a href="https://pub.dev/packages/nrb" rel="noopener noreferrer"&gt;https://pub.dev/packages/nrb&lt;/a&gt;&lt;/p&gt;

</description>
      <category>flutter</category>
      <category>dart</category>
      <category>ui</category>
      <category>mobileuidevelopment</category>
    </item>
  </channel>
</rss>
