<?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: Cavid Haciyev</title>
    <description>The latest articles on Forem by Cavid Haciyev (@jaweedg).</description>
    <link>https://forem.com/jaweedg</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%2F3818718%2Fe7a1591f-d17c-45df-9f03-07ec073d52dd.png</url>
      <title>Forem: Cavid Haciyev</title>
      <link>https://forem.com/jaweedg</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/jaweedg"/>
    <language>en</language>
    <item>
      <title>Stop struggling with basic Flutter widgets. 🛠️</title>
      <dc:creator>Cavid Haciyev</dc:creator>
      <pubDate>Wed, 25 Mar 2026 16:26:32 +0000</pubDate>
      <link>https://forem.com/jaweedg/stop-struggling-with-basic-flutter-widgets-4l8g</link>
      <guid>https://forem.com/jaweedg/stop-struggling-with-basic-flutter-widgets-4l8g</guid>
      <description>&lt;p&gt;If you want to build custom-drawn, high-performance UI components, you need to go deeper into the rendering layer. My Premium Graphics Kit is a collection of 14+ production-ready widgets built entirely with &lt;code&gt;CustomPainter&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's inside:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Advanced Gauges, Progress Bars, and Math-driven UI.&lt;/li&gt;
&lt;li&gt;Deep dives into PathMetrics and high-FPS optimization.&lt;/li&gt;
&lt;li&gt;Modular, easy-to-integrate code.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Flash Sale Alert:&lt;br&gt;
Use code EARLY60 at checkout for a massive 60% discount.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;As a special gift, I'm including the Zentro E-commerce project (full app architecture with BLoC/Riverpod) so you can see how to structure large-scale Flutter apps in a real-world scenario.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Valid until the end of this week or first 50 licenses. 🏁&lt;/strong&gt;&lt;/p&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
      &lt;div class="c-embed__body flex items-center justify-between"&gt;
        &lt;a href="https://jaweed.gumroad.com/l/flutter-custom-graphics-kit/kxyvm0e" rel="noopener noreferrer" class="c-link fw-bold flex items-center"&gt;
          &lt;span class="mr-2"&gt;jaweed.gumroad.com&lt;/span&gt;
          

        &lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


</description>
      <category>flutter</category>
      <category>dart</category>
      <category>custompainter</category>
      <category>ui</category>
    </item>
    <item>
      <title>How I achieved 120 FPS for complex dashboards in Flutter using pure math and CustomPainter</title>
      <dc:creator>Cavid Haciyev</dc:creator>
      <pubDate>Wed, 11 Mar 2026 16:16:30 +0000</pubDate>
      <link>https://forem.com/jaweedg/how-i-achieved-120-fps-for-complex-dashboards-in-flutter-using-pure-math-and-custompainter-4mg2</link>
      <guid>https://forem.com/jaweedg/how-i-achieved-120-fps-for-complex-dashboards-in-flutter-using-pure-math-and-custompainter-4mg2</guid>
      <description>&lt;h1&gt;
  
  
  Beyond Standard Widgets: The Power of CustomPainter
&lt;/h1&gt;

&lt;p&gt;Most Flutter developers rely on heavy charting libraries. While they are great for simple use cases, they often become a bottleneck when you need to animate multiple complex gauges simultaneously. &lt;/p&gt;

&lt;p&gt;I spent the last few weeks pushing Flutter's rendering limits to build a dashboard that stays at a butter-smooth &lt;strong&gt;120 FPS&lt;/strong&gt; without any external dependencies.&lt;/p&gt;




&lt;h3&gt;
  
  
  3 Technical Insights from building 14 Premium Components
&lt;/h3&gt;

&lt;h4&gt;
  
  
  1. Trigonometry over Transformation
&lt;/h4&gt;

&lt;p&gt;Instead of nesting &lt;code&gt;Transform.rotate&lt;/code&gt; widgets (which adds overhead to the widget tree and complicates hit testing), I moved all logic into the &lt;code&gt;paint()&lt;/code&gt; method. Calculating offsets using &lt;code&gt;cos&lt;/code&gt; and &lt;code&gt;sin&lt;/code&gt; directly on the canvas keeps the rendering pipeline lean.&lt;/p&gt;

&lt;h4&gt;
  
  
  2. Mastering RepaintBoundary
&lt;/h4&gt;

&lt;p&gt;A common mistake is wrapping the entire dashboard in one boundary. I implemented a strategy where each dynamic component has its own &lt;code&gt;RepaintBoundary&lt;/code&gt;. This prevents a single animating needle from triggering a repaint of the static background or other gauges.&lt;/p&gt;

&lt;h4&gt;
  
  
  3. Memory &amp;amp; Raster Optimization
&lt;/h4&gt;

&lt;p&gt;Using Flutter DevTools, I tracked down raster cache issues. By pre-calculating &lt;code&gt;Path&lt;/code&gt; objects and avoiding &lt;code&gt;saveLayer()&lt;/code&gt; calls, I managed to reduce the frame time significantly, even on mid-range Android devices.&lt;/p&gt;




&lt;h3&gt;
  
  
  The Result: A Premium UI Kit
&lt;/h3&gt;

&lt;p&gt;I’ve documented the math and logic behind these 14 components. If you want to see how a "Senior-level" custom rendering is implemented or save 40+ hours of development time, you can check out the full source code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What’s inside:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;12 Main Components (Advanced charts, valuation gauges, dynamic indicators).&lt;/li&gt;
&lt;li&gt;2 Exclusive Bonuses (Segmented Progress Bar &amp;amp; Glassmorphic Card).&lt;/li&gt;
&lt;li&gt;100% Pure Dart &amp;amp; CustomPainter.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🎁 Open Source Sample: The Gauge Meter Logic
&lt;/h3&gt;

&lt;p&gt;I want to be transparent about the quality of the code in this kit. Below is a functional sample of the &lt;strong&gt;Gauge Meter&lt;/strong&gt; component. It demonstrates how I use trigonometry to calculate tick positions and needles without adding extra widgets to the tree.&lt;/p&gt;

&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;







&lt;p&gt;By studying this sample, you can see the performance-first approach I took for all 14 components in the kit.&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://jaweed.gumroad.com/l/flutter-custom-graphics-kit" rel="noopener noreferrer"&gt;Get the Premium Flutter Custom Graphics Kit on Gumroad&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;I’d love to hear your thoughts!&lt;/strong&gt; How often do you reach for &lt;code&gt;CustomPainter&lt;/code&gt; instead of a package? Let's discuss performance optimization in the comments!&lt;/p&gt;

&lt;h1&gt;
  
  
  flutter #dart #mobiledev #programming
&lt;/h1&gt;

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