<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Bigyanic]]></title><description><![CDATA[Bigyanic]]></description><link>https://notes.bigyantimilsina.com.np</link><generator>RSS for Node</generator><lastBuildDate>Sun, 26 Apr 2026 07:39:06 GMT</lastBuildDate><atom:link href="https://notes.bigyantimilsina.com.np/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[How 10 Minutes of Scrolling Cost Me 2 Weeks of Progress (And What I’m Doing About It)]]></title><description><![CDATA[We’ve all been there. “Just one more reel.” “Just one more YouTube short.” What starts as a 10-minute scroll spirals into hours of mindless consumption. But for me, this habit didn’t just cost time—it derailed my learning journey, pushed me into a cy...]]></description><link>https://notes.bigyantimilsina.com.np/how-10-minutes-of-scrolling-cost-me-2-weeks-of-progress-and-what-im-doing-about-it</link><guid isPermaLink="true">https://notes.bigyantimilsina.com.np/how-10-minutes-of-scrolling-cost-me-2-weeks-of-progress-and-what-im-doing-about-it</guid><category><![CDATA[Learning Journey]]></category><category><![CDATA[procrastination]]></category><category><![CDATA[Flutter]]></category><category><![CDATA[Developer Tools]]></category><category><![CDATA[Time management]]></category><dc:creator><![CDATA[Bigyanic]]></dc:creator><pubDate>Wed, 22 Jan 2025 17:25:07 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/rrbILwoKiTI/upload/14bd16e1877e6bb659b7fe387bae384f.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>We’ve all been there. <em>“Just one more reel.”</em> <em>“Just one more YouTube short.”</em> What starts as a 10-minute scroll spirals into hours of mindless consumption. But for me, this habit didn’t just cost time—it derailed my learning journey, pushed me into a cycle of self-doubt, and left me feeling like I’d made <em>zero progress</em> for weeks. If you’ve ever felt stuck, demotivated, or trapped in the endless loop of “learning about learning,” this post is for you.</p>
<h3 id="heading-the-wake-up-call-how-social-media-algorithms-hijacked-my-progress"><strong>The Wake-Up Call: <em>How Social Media Algorithms Hijacked My Progress</em></strong></h3>
<p>A few weeks ago, I realized something terrifying: <strong>I hadn’t written a single line of meaningful code in 14 days.</strong> My plan to <strong>“stay updated”</strong> by watching tech videos, reading trend reports, and doom-scrolling through programming debates backfired spectacularly. <mark>Here’s why:</mark></p>
<ol>
<li><p><strong>The Illusion of “Learning” vs. Actual Learning</strong><br /> I convinced myself that watching videos about Flutter updates, React Native vs. Flutter debates, or AI replacing developers counted as “productive” time. Sure, I learned things like:</p>
<ul>
<li><p>Flutter’s latest features (while also seeing clickbait like <em>“Is Flutter Dead?”</em>),</p>
</li>
<li><p>Tools other developers use,</p>
</li>
<li><p>Why React Native <em>might</em> be better <strong><em>(until the next video argued the opposite)</em></strong>.</p>
</li>
</ul>
</li>
</ol>
<p>    But this passive consumption left me overwhelmed, confused, and paralyzed. Every conflicting opinion made me question my choices (<em>“Should I switch to React Native?”</em>), and I wasted days hopping between tutorials without building anything.</p>
<ol start="2">
<li><p><strong>Life Happens (And Lazy Me Took Over)</strong><br /> Work routine changes, personal commitments, and unexpected tasks became excuses to procrastinate. The less I coded, the harder it felt to start again. The cycle of guilt and avoidance grew louder: <em>“I’ll do it tomorrow.”</em></p>
</li>
<li><p><strong>Time Management? What’s That?</strong><br /> Let’s be real—I’m terrible at managing time. I’d schedule “learning hours” but end up scrolling, telling myself, <em>“I’ll just finish this video.”</em> Spoiler: I never did.</p>
</li>
</ol>
<h3 id="heading-the-realization-tutorial-hell-isnt-just-for-beginners"><strong>The Realization: Tutorial Hell Isn’t Just for Beginners</strong></h3>
<p>I’ve been coding for years, yet I fell into the same trap I warn beginners about: <strong>tutorial hell</strong>. Watching endless videos without applying the knowledge? Check. Jumping between technologies based on trends? Check. Feeling like a fraud despite “knowing” concepts? Double-check.</p>
<p><mark>But here’s the kicker: </mark> <strong><mark>You don’t learn to swim by watching swimming tutorials.</mark></strong></p>
<h3 id="heading-the-fix-building-my-way-out-of-the-rut"><strong>The Fix: Building My Way Out of the Rut</strong></h3>
<p>Enough is enough. I’m done letting algorithms and procrastination dictate my progress. Here’s my plan:</p>
<h4 id="heading-1-the-no-more-tutorials-challenge"><strong>1. The <em>“No More Tutorials”</em> Challenge</strong></h4>
<ul>
<li><p><strong>Project First, Tutorials Second:</strong> Instead of starting with tutorials, I’m building a <strong>basic news app</strong> in Flutter. When I hit a roadblock, I’ll look up <em>specific</em> solutions. No more passive watching!</p>
</li>
<li><p><strong>Focus on Fundamentals:</strong> State management, API integration, clean architecture—things I’ve “learned” a dozen times but rarely implemented fully.</p>
</li>
</ul>
<h4 id="heading-2-public-accountability"><strong>2. Public Accountability</strong></h4>
<p>Writing this post is my way of saying: <em>“Call me out if I don’t follow through.”</em> I’ll share weekly updates on:</p>
<ul>
<li><p>Progress (or lack thereof),</p>
</li>
<li><p>Code snippets,</p>
</li>
<li><p>Lessons learned (and epic fails).</p>
</li>
</ul>
<h3 id="heading-why-a-news-app"><strong>Why a News App?</strong></h3>
<p>It’s simple, scalable, and covers critical concepts:</p>
<ul>
<li><p>Fetching data from APIs,</p>
</li>
<li><p>State management (Provider/Riverpod),</p>
</li>
<li><p>Caching, error handling, and UI design.<br />  Plus, I can expand it later with features like user authentication or notifications.</p>
</li>
</ul>
<h3 id="heading-a-message-to-my-future-self-and-you"><strong>A Message to My Future Self (And You)</strong></h3>
<p>If you’re reading this and thinking, <em>“I’ve been there too,”</em> here’s my advice:</p>
<ul>
<li><p><strong>Stop consuming; start building.</strong></p>
</li>
<li><p><strong>Trends come and go—skills stay.</strong></p>
</li>
<li><p><strong>Progress &gt; Perfection.</strong></p>
</li>
</ul>
<p><strong>What’s Next?</strong><br />By next week, I’ll have the app’s skeleton ready. Follow along on <a target="_blank" href="https://notes.bigyantimilsina.com.np/">my blog</a> for updates, and feel free to roast me if I slack off.</p>
<p>Let’s code.</p>
<hr />
<h2 id="heading-ps-if-youve-ever-fallen-into-the-endless-scrolling-trap-reply-with-your-story-misery-loves-companyand-accountability"><strong>P.S.</strong> If you’ve ever fallen into the “endless scrolling” trap, reply with your story. Misery loves company—and accountability! 😅</h2>
]]></content:encoded></item><item><title><![CDATA[Flutter Custom Widgets Tutorial: A Beginner's Learning Journey]]></title><description><![CDATA[Flutter is like a momo-making machine. You take raw ingredients (widgets), mix them well (code), and create something delicious (apps)! For anyone diving into Flutter development for beginners, custom widgets are a must-learn skill. They let you buil...]]></description><link>https://notes.bigyantimilsina.com.np/flutter-custom-widgets-tutorial-a-beginners-learning-journey</link><guid isPermaLink="true">https://notes.bigyantimilsina.com.np/flutter-custom-widgets-tutorial-a-beginners-learning-journey</guid><category><![CDATA[Flutter]]></category><category><![CDATA[Programming Blogs]]></category><category><![CDATA[coding]]></category><category><![CDATA[Learning Journey]]></category><category><![CDATA[learning]]></category><category><![CDATA[#learning-in-public]]></category><category><![CDATA[Flutter Examples]]></category><category><![CDATA[Dart]]></category><dc:creator><![CDATA[Bigyanic]]></dc:creator><pubDate>Sat, 11 Jan 2025 13:57:40 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/KE0nC8-58MQ/upload/ef70eb84768f2895ab99073964c26300.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Flutter is like a momo-making machine. You take raw ingredients (widgets), mix them well (code), and create something delicious (apps)! For anyone diving into Flutter development for beginners, custom widgets are a must-learn skill. They let you build unique app features that stand out while keeping your code clean. Let’s explore how to create custom widgets in Flutter and simplify your app development journey. But what if the pre-made "momo" wrappers don’t match your filling? That’s when <strong>custom widgets</strong> come in handy.</p>
<p>Custom widgets are like making your own momo wrapper—just the way you like it. Let me explain how I learned to make my own widgets in Flutter, step by step.</p>
<hr />
<h3 id="heading-benefits-of-custom-widgets-in-flutter"><strong>Benefits of Custom Widgets in Flutter</strong></h3>
<p>When I started using Flutter, my code often repeated. For example, if every screen needed a colorful box with text and an icon, I had to write the same code again and again. This made my app messy and hard to update.</p>
<p>Then I learned about custom widgets. It felt like a solution to everything! With custom widgets, I could:</p>
<ul>
<li><p>Stop repeating code.</p>
</li>
<li><p>Keep my app neat and easy to update.</p>
</li>
<li><p>Make changes in one place instead of everywhere.</p>
</li>
</ul>
<h3 id="heading-how-i-learned-to-create-a-custom-widget"><strong>How I Learned to Create a Custom Widget</strong></h3>
<p>Let me show you how I made a custom widget step by step. I created something called <strong>NepaliCard</strong> to display a food name and description. This example helped me understand Flutter widget creation step-by-step.</p>
<ol>
<li><h4 id="heading-start-with-the-basics"><strong>Start with the Basics</strong></h4>
</li>
</ol>
<p>First, I created a new file called <code>nepali_card.dart</code>. Keeping widgets in separate files makes them easy to find.</p>
<pre><code class="lang-dart"><span class="hljs-keyword">import</span> <span class="hljs-string">'package:flutter/material.dart'</span>;

<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">NepaliCard</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">StatelessWidget</span> </span>{
  <span class="hljs-keyword">final</span> <span class="hljs-built_in">String</span> title;
  <span class="hljs-keyword">final</span> <span class="hljs-built_in">String</span> description;

  <span class="hljs-comment">// Constructor to get inputs</span>
  <span class="hljs-keyword">const</span> NepaliCard({
    <span class="hljs-keyword">required</span> <span class="hljs-keyword">this</span>.title,
    <span class="hljs-keyword">required</span> <span class="hljs-keyword">this</span>.description,
    Key? key,
  }) : <span class="hljs-keyword">super</span>(key: key);

  <span class="hljs-meta">@override</span>
  Widget build(BuildContext context) {
    <span class="hljs-keyword">return</span> Card(
      margin: EdgeInsets.all(<span class="hljs-number">10</span>),
      child: Padding(
        padding: <span class="hljs-keyword">const</span> EdgeInsets.all(<span class="hljs-number">15.0</span>),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            Text(
              title,
              style: TextStyle(
                fontSize: <span class="hljs-number">20</span>,
                fontWeight: FontWeight.bold,
              ),
            ),
            SizedBox(height: <span class="hljs-number">8</span>),
            Text(
              description,
              style: TextStyle(fontSize: <span class="hljs-number">16</span>, color: Colors.grey[<span class="hljs-number">700</span>]),
            ),
          ],
        ),
      ),
    );
  }
}
</code></pre>
<p>Here’s what’s happening:</p>
<ul>
<li><p><code>title</code> and <code>description</code> are inputs for the widget.</p>
</li>
<li><p>The <code>build</code> method defines how the widget will look.</p>
</li>
</ul>
<ol start="2">
<li><h4 id="heading-use-the-widget"><strong>Use the Widget</strong></h4>
</li>
</ol>
<p>Once my widget was ready, I used it in my main app. Here’s what I added to <code>main.dart</code>:</p>
<pre><code class="lang-dart"><span class="hljs-keyword">import</span> <span class="hljs-string">'package:flutter/material.dart'</span>;
<span class="hljs-keyword">import</span> <span class="hljs-string">'nepali_card.dart'</span>;

<span class="hljs-keyword">void</span> main() {
  runApp(MyApp());
}

<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">MyApp</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">StatelessWidget</span> </span>{
  <span class="hljs-meta">@override</span>
  Widget build(BuildContext context) {
    <span class="hljs-keyword">return</span> MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text(<span class="hljs-string">'Nepali Foods'</span>)),
        body: ListView(
          children: [
            NepaliCard(
              title: <span class="hljs-string">'Momo'</span>,
              description: <span class="hljs-string">'Delicious steamed dumplings with meat or veggies.'</span>,
            ),
            NepaliCard(
              title: <span class="hljs-string">'Sel Roti'</span>,
              description: <span class="hljs-string">'A crispy, sweet rice-based ring-shaped bread.'</span>,
            ),
            NepaliCard(
              title: <span class="hljs-string">'Dal Bhat'</span>,
              description: <span class="hljs-string">'A classic Nepali meal with rice, lentils, and veggies.'</span>,
            ),
          ],
        ),
      ),
    );
  }
}
</code></pre>
<ol start="3">
<li><h4 id="heading-experiment-and-change"><strong>Experiment and Change</strong></h4>
</li>
</ol>
<p>When I saw this working, I was so happy! Then I thought, "What if I add images?" So, I updated the <code>NepaliCard</code> widget to include an image parameter. It was fun to try different things and see how they worked.</p>
<h3 id="heading-what-helped-me-while-learning"><strong>What Helped Me While Learning</strong></h3>
<p>Here are some things that made learning easier:</p>
<ol>
<li><p><strong>Start Small</strong>: I didn’t try to make a big, complex widget. I started with simple cards.</p>
</li>
<li><p><strong>Reuse Widgets</strong>: After I made my first widget, I used it in different places. This helped me understand how flexible custom widgets are.</p>
</li>
<li><p><strong>Ask for Help</strong>: Whenever I got stuck, I searched online or asked Flutter communities. People were very helpful!</p>
</li>
</ol>
<h2 id="heading-flutter-custom-widgets-made-easy"><strong>Flutter Custom Widgets Made Easy</strong></h2>
<p>For me, learning custom widgets was like learning to cook. At first, it felt hard, but step by step, I got better. And just like cooking, you can always try new things to make your widgets unique.</p>
<p>If you’re learning Flutter, try creating a custom widget. Start with something simple, keep practicing, and have fun. Happy Fluttering!</p>
]]></content:encoded></item><item><title><![CDATA[How to Fetch Data from the Internet in Flutter with APIs]]></title><description><![CDATA[API (Application Programming Interface)
An API (Application Programming Interface) is like a bridge that lets two software programs talk to each other. It defines how one program can request information or services from another. For example, when you...]]></description><link>https://notes.bigyantimilsina.com.np/how-to-fetch-data-from-the-internet-in-flutter-with-apis</link><guid isPermaLink="true">https://notes.bigyantimilsina.com.np/how-to-fetch-data-from-the-internet-in-flutter-with-apis</guid><category><![CDATA[APIs]]></category><category><![CDATA[Flutter]]></category><category><![CDATA[Dart]]></category><category><![CDATA[Flutter Widgets]]></category><category><![CDATA[Flutter Examples]]></category><dc:creator><![CDATA[Bigyanic]]></dc:creator><pubDate>Wed, 01 Jan 2025 15:10:08 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/FHnnjk1Yj7Y/upload/23e42524ee2157585ef28d70f47e6501.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-api-application-programming-interface"><strong>API (Application Programming Interface)</strong></h2>
<p>An <strong>API (Application Programming Interface)</strong> is like a bridge that lets two software programs talk to each other. It defines how one program can request information or services from another. For example, when you use a weather app, the app asks a weather service API for the current temperature, and the API sends back the data, like "15°C and sunny."</p>
<p><img src="https://miro.medium.com/v2/resize:fit:700/0*6Wv21I9qLUfgDS8D.png" alt /></p>
<p>APIs make it easy for systems to work together. For instance, an online store might use a payment gateway API to process payments. When you enter your card details, the API sends the information securely to the bank, processes the payment, and returns a response like "Payment successful." APIs are everywhere, simplifying how apps and services communicate behind the scenes.</p>
<blockquote>
<p>"An API is like a waiter at a restaurant—it takes your request to the kitchen (server) and brings back exactly what you ordered, without you needing to know how it was prepared."</p>
</blockquote>
<h3 id="heading-store-analogy-for-api-requests"><strong>Store Analogy for API Requests</strong></h3>
<ol>
<li><p><strong>You (Your App)</strong>: Want to buy something (like a new product, which in our case is <strong>news</strong>).</p>
</li>
<li><p><strong>The Store (The API)</strong>: Sells the product you need (the <strong>news articles</strong>).</p>
</li>
<li><p><strong>Your Request (HTTP Request)</strong>: You go to the store and ask, "Do you have any new products?" (You’re asking for the latest news).</p>
</li>
<li><p><strong>Store's Response (HTTP Response)</strong>: The store gives you the latest products (news articles) if they have them, or they say "Sorry, we don’t have it right now."</p>
</li>
</ol>
<blockquote>
<p>To use the <code>http</code> package in your Flutter project, you can simply run the command <code>flutter pub add http</code> in your terminal. This automatically adds the package to your project and installs it. Once the installation is complete, you can import the package into your Dart files using <code>import 'package:http/http.dart' as http;</code>. This allows you to easily make HTTP requests in your app.</p>
</blockquote>
<h3 id="heading-step-1-api-integration-backend-logic"><strong>Step 1: API Integration (Backend Logic)</strong></h3>
<p>This file is responsible for making the API request to the "store" (NewsAPI) and retrieving the products (news).</p>
<pre><code class="lang-dart"><span class="hljs-comment">// File: store_service.dart</span>
<span class="hljs-keyword">import</span> <span class="hljs-string">'package:http/http.dart'</span> <span class="hljs-keyword">as</span> http; <span class="hljs-comment">// To communicate with the store (HTTP client)</span>
<span class="hljs-keyword">import</span> <span class="hljs-string">'dart:convert'</span>; <span class="hljs-comment">// To decode the JSON response from the store (unwrap the box)</span>

<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">StoreService</span> </span>{
  <span class="hljs-comment">// Function to fetch products (news) from the store (API)</span>
  Future&lt;<span class="hljs-built_in">List</span>&lt;<span class="hljs-built_in">dynamic</span>&gt;&gt; fetchProducts() <span class="hljs-keyword">async</span> {
    <span class="hljs-keyword">final</span> url = <span class="hljs-built_in">Uri</span>.parse(
        <span class="hljs-string">'https://jsonplaceholder.typicode.com/posts'</span>); <span class="hljs-comment">// Store's address (API URL)</span>

    <span class="hljs-keyword">final</span> response = <span class="hljs-keyword">await</span> http.<span class="hljs-keyword">get</span>(url); <span class="hljs-comment">// Asking the store for the latest products (request)</span>

    <span class="hljs-keyword">if</span> (response.statusCode == <span class="hljs-number">200</span>) {
      <span class="hljs-comment">// If the store says, "Yes, we have the products!"</span>
      <span class="hljs-keyword">return</span> json.decode(response.body); <span class="hljs-comment">// Unwrap the box (JSON) and extract the products (news articles)</span>
    } <span class="hljs-keyword">else</span> {
      <span class="hljs-comment">// If the store replies with an error (no products)</span>
      <span class="hljs-keyword">throw</span> Exception(<span class="hljs-string">'Failed to load products'</span>); <span class="hljs-comment">// Show error if the store has no products</span>
    }
  }
}
</code></pre>
<h3 id="heading-explanation-of-the-code"><strong>Explanation of the Code</strong></h3>
<h4 id="heading-storeservicedart-backend-logic"><strong>store_service.dart (Backend Logic)</strong></h4>
<ol>
<li><p><strong>Imports</strong>:</p>
<ul>
<li>We import <code>http</code> to make HTTP requests (ask the store for products) and <code>dart:convert</code> to decode the JSON data (unwrap the box containing news articles).</li>
</ul>
</li>
<li><p><strong>StoreService Class</strong>:</p>
<ul>
<li>This is where we define the logic for <strong>asking the store for products</strong>. The <code>fetchProducts</code> function sends an HTTP request to the API URL, waits for a response, and if successful, decodes the response (JSON) to extract the product data.</li>
</ul>
</li>
<li><p><strong>Error Handling</strong>:</p>
<ul>
<li>If the store has no products, we handle it with an exception (<code>throw Exception('Failed to load products');</code>).</li>
</ul>
</li>
</ol>
<p><img src="https://sitechecker.pro/wp-content/uploads/2023/09/200-status-code.png" alt="What is 200 (OK) Response Code: Meaning, Issues with 200 Status Codes" /></p>
<h3 id="heading-step-2-ui-page-store-display"><strong>Step 2: UI Page (Store Display)</strong></h3>
<pre><code class="lang-dart"><span class="hljs-comment">// File: store_page.dart</span>
<span class="hljs-keyword">import</span> <span class="hljs-string">'package:flutter/material.dart'</span>; <span class="hljs-comment">// For UI components (store shelves)</span>
<span class="hljs-keyword">import</span> <span class="hljs-string">'store_service.dart'</span>; <span class="hljs-comment">// Asking the store for products (news)</span>

<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">StorePage</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">StatefulWidget</span> </span>{
  <span class="hljs-meta">@override</span>
  _StorePageState createState() =&gt; _StorePageState();
}

<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">_StorePageState</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">State</span>&lt;<span class="hljs-title">StorePage</span>&gt; </span>{
  <span class="hljs-keyword">late</span> Future&lt;<span class="hljs-built_in">List</span>&lt;<span class="hljs-built_in">dynamic</span>&gt;&gt; products; <span class="hljs-comment">// Where we keep the products (news) from the store</span>

  <span class="hljs-meta">@override</span>
  <span class="hljs-keyword">void</span> initState() {
    <span class="hljs-keyword">super</span>.initState();
    products = StoreService().fetchProducts(); <span class="hljs-comment">// Asking the store for the latest products (news)</span>
  }

  <span class="hljs-meta">@override</span>
  Widget build(BuildContext context) {
    <span class="hljs-keyword">return</span> Scaffold(
      appBar: AppBar(
        title: Text(<span class="hljs-string">'Simple Store App'</span>), <span class="hljs-comment">// Store's name (your app title)</span>
      ),
      body: FutureBuilder&lt;<span class="hljs-built_in">List</span>&lt;<span class="hljs-built_in">dynamic</span>&gt;&gt;(
        future: products, <span class="hljs-comment">// Waiting for the store to give us the products (news)</span>
        builder: (context, snapshot) {
          <span class="hljs-keyword">if</span> (snapshot.connectionState == ConnectionState.waiting) {
            <span class="hljs-keyword">return</span> Center(child: CircularProgressIndicator()); <span class="hljs-comment">// While waiting, show a loading symbol</span>
          } <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> (snapshot.hasError) {
            <span class="hljs-keyword">return</span> Center(child: Text(<span class="hljs-string">'Error: <span class="hljs-subst">${snapshot.error}</span>'</span>)); <span class="hljs-comment">// If the store has an issue (error response)</span>
          } <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> (!snapshot.hasData || snapshot.data!.isEmpty) {
            <span class="hljs-keyword">return</span> Center(child: Text(<span class="hljs-string">'No products available'</span>)); <span class="hljs-comment">// If the store has no products (empty result)</span>
          }

          <span class="hljs-keyword">final</span> items = snapshot.data!; <span class="hljs-comment">// The products (items) from the store</span>
          <span class="hljs-keyword">return</span> ListView.builder(
            itemCount: items.length, <span class="hljs-comment">// How many products (news items) to display</span>
            itemBuilder: (context, index) {
              <span class="hljs-keyword">final</span> item = items[index]; <span class="hljs-comment">// Each individual product (news article)</span>
              <span class="hljs-keyword">return</span> ListTile(
                title: Text(item[<span class="hljs-string">'title'</span>]), <span class="hljs-comment">// Product name (news title)</span>
                subtitle: Text(item[<span class="hljs-string">'body'</span>]), <span class="hljs-comment">// Product description (news body)</span>
              );
            },
          );
        },
      ),
    );
  }
}
</code></pre>
<h4 id="heading-storepagedart-ui-logic"><strong>store_page.dart (UI Logic)</strong></h4>
<ol>
<li><p><strong>FutureBuilder</strong>:</p>
<ul>
<li>We use a <code>FutureBuilder</code> to handle the <strong>asynchronous nature of the API request</strong>. The app will show a loading indicator while waiting for the store to respond and will display the news when available.</li>
</ul>
</li>
<li><p><strong>Displaying Data/News</strong>:</p>
<ul>
<li>Once the data is received, the <code>ListView.builder</code> dynamically creates a list of products (articles) to display, each with a title and description.</li>
</ul>
</li>
<li><p><strong>Error Handling</strong>:</p>
<ul>
<li>If there’s an error or no data, appropriate error messages are displayed on the UI.</li>
</ul>
</li>
</ol>
<h3 id="heading-3-main-file-maindart"><strong>3. Main File:</strong> <code>main.dart</code></h3>
<p>This file initializes the app and opens the "store" to show the products (news).</p>
<pre><code class="lang-dart"><span class="hljs-comment">// File: main.dart</span>
<span class="hljs-keyword">import</span> <span class="hljs-string">'package:flutter/material.dart'</span>;
<span class="hljs-keyword">import</span> <span class="hljs-string">'store_page.dart'</span>; <span class="hljs-comment">// The page where we see the store products (news)</span>

<span class="hljs-keyword">void</span> main() =&gt; runApp(StoreApp());

<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">StoreApp</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">StatelessWidget</span> </span>{
  <span class="hljs-meta">@override</span>
  Widget build(BuildContext context) {
    <span class="hljs-keyword">return</span> MaterialApp(
      home: StorePage(), <span class="hljs-comment">// Going to the store to see the products (news)</span>
    );
  }
}
</code></pre>
<h2 id="heading-conclusion">Conclusion</h2>
<p>This article demonstrates how to fetch and display data in Flutter using the <code>http</code> package. By breaking the process into simple steps, we learned how to send API requests, decode JSON responses, handle errors, and display data dynamically using widgets like <code>FutureBuilder</code> and <code>ListView</code>. This example serves as a foundational guide for building apps that connect to APIs, enabling you to create dynamic, data-driven Flutter applications with real-time internet data integration.</p>
]]></content:encoded></item><item><title><![CDATA[All You Need to Know About Flutter Widgets]]></title><description><![CDATA[Have you ever wondered how apps are built? In Flutter, the answer lies in something magical called widgets. Let’s dive in to understand what widgets are, how they work, and why they’re so important.

What is a Widget?
A widget is like a building bloc...]]></description><link>https://notes.bigyantimilsina.com.np/all-you-need-to-know-about-flutter-widgets</link><guid isPermaLink="true">https://notes.bigyantimilsina.com.np/all-you-need-to-know-about-flutter-widgets</guid><category><![CDATA[Flutter Examples]]></category><category><![CDATA[Flutter Widgets]]></category><dc:creator><![CDATA[Bigyanic]]></dc:creator><pubDate>Thu, 26 Dec 2024 13:27:56 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/N8N991BvKlE/upload/0d264c2d67bd56dda7452b0633a2826b.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Have you ever wondered how apps are built? In Flutter, the answer lies in something magical called <strong><mark>widgets</mark></strong>. Let’s dive in to understand what widgets are, how they work, and why they’re so important.</p>
<hr />
<h3 id="heading-what-is-a-widget">What is a Widget?</h3>
<p>A <strong>widget</strong> is like a building block in Flutter. Imagine you’re creating a LEGO model — each piece is like a widget. Widgets are the basic units that make up your app’s user interface (UI). Everything you see on the screen in a Flutter app is a widget: buttons, text, images, and even the spaces between them.</p>
<p>Widgets are:</p>
<ul>
<li><p><strong>Reusable</strong>: You can use the same widget in multiple places.</p>
</li>
<li><p><strong>Customizable</strong>: You can change how they look or behave.</p>
</li>
<li><p><strong>Hierarchical</strong>: Widgets live inside other widgets, forming a tree-like structure.</p>
</li>
</ul>
<hr />
<h3 id="heading-why-are-widgets-key-to-flutter">Why Are Widgets Key to Flutter?</h3>
<p>Flutter is all about widgets! They:</p>
<ul>
<li><p>Make building UIs <strong>easy</strong>.</p>
</li>
<li><p>Let you focus on <strong>what you want</strong> rather than how to do it.</p>
</li>
<li><p>Are part of a system where <strong>everything is a widget</strong>, even things like padding and layout.</p>
</li>
</ul>
<p>Widgets can be <strong>stateless</strong> (don’t change) or <strong>stateful</strong> (can change when you interact with them).</p>
<hr />
<h3 id="heading-starting-with-core-widgets">Starting with Core Widgets</h3>
<p>Let’s talk about some essential widgets that you’ll use all the time in Flutter. We’ll start with the most basic ones and move to more advanced ones.</p>
<h4 id="heading-1-materialapp">1. <strong>MaterialApp</strong></h4>
<p>The <strong>MaterialApp</strong> widget is like the foundation of your app. It wraps your whole app and gives it a Material Design look (Google’s design system).</p>
<pre><code class="lang-dart"><span class="hljs-keyword">void</span> main() {
  runApp(MaterialApp(
    home: Scaffold(
      appBar: AppBar(title: Text(<span class="hljs-string">'Hello Flutter'</span>)),
      body: Center(child: Text(<span class="hljs-string">'Welcome to Flutter!'</span>)),
    ),
  ));
}
</code></pre>
<ul>
<li><p><strong>Why use it?</strong> It helps manage navigation (moving between screens) and themes (colors and fonts).</p>
</li>
<li><p><strong>What if we don’t use it?</strong> Without it, your app won’t have basic features like a default design, themes, or navigation.</p>
</li>
</ul>
<h4 id="heading-2-scaffold">2. <strong>Scaffold</strong></h4>
<p>The <strong>Scaffold</strong> widget provides a basic structure for your app screen. It includes common UI elements like an app bar, floating action button, and a drawer.</p>
<pre><code class="lang-dart">Scaffold(
  appBar: AppBar(
    title: Text(<span class="hljs-string">'Scaffold Example'</span>),
  ),
  body: Center(
    child: Text(<span class="hljs-string">'This is a Scaffold!'</span>),
  ),
  floatingActionButton: FloatingActionButton(
    onPressed: () {},
    child: Icon(Icons.add),
  ),
);
</code></pre>
<ul>
<li><p><strong>Why use it?</strong> It saves time by giving you prebuilt components.</p>
</li>
<li><p><strong>What if we don’t use it?</strong> You’d have to create these features manually, which can be tedious.</p>
</li>
</ul>
<hr />
<p>Now that we have the basics down, let’s look at some other widgets you’ll use frequently.</p>
<h4 id="heading-3-container">3. <strong>Container</strong></h4>
<p>The <strong>Container</strong> widget is like a box. You can:</p>
<ul>
<li><p>Change its size.</p>
</li>
<li><p>Add color or decorations.</p>
</li>
<li><p>Use it to hold other widgets.</p>
</li>
</ul>
<pre><code class="lang-dart">Container(
  width: <span class="hljs-number">100</span>,
  height: <span class="hljs-number">100</span>,
  color: Colors.blue,
  child: Center(
    child: Text(
      <span class="hljs-string">'Container'</span>,
      style: TextStyle(color: Colors.white),
    ),
  ),
);
</code></pre>
<p>The <strong>Container</strong> widget is like a box. You can:</p>
<ul>
<li><p>Change its size.</p>
</li>
<li><p>Add color or decorations.</p>
</li>
<li><p>Use it to hold other widgets.</p>
</li>
</ul>
<h4 id="heading-4-center">4. <strong>Center</strong></h4>
<p>The <strong>Center</strong> widget is used to center its child widget in the middle of the screen.</p>
<pre><code class="lang-dart">Center(
  child: Text(
    <span class="hljs-string">'I am centered!'</span>,
    style: TextStyle(fontSize: <span class="hljs-number">20</span>),
  ),
);
</code></pre>
<p>The <strong>Center</strong> widget is used to center its child widget in the middle of the screen.</p>
<h4 id="heading-5-text">5. <strong>Text</strong></h4>
<p>The <strong>Text</strong> widget displays text on the screen. You can customize the font, size, color, and more.</p>
<pre><code class="lang-dart">Text(
  <span class="hljs-string">'Hello, Flutter!'</span>,
  style: TextStyle(
    fontSize: <span class="hljs-number">24</span>,
    color: Colors.black,
    fontWeight: FontWeight.bold,
  ),
);
</code></pre>
<p>The <strong>Text</strong> widget displays text on the screen. You can customize the font, size, color, and more.</p>
<h4 id="heading-6-image">6. <strong>Image</strong></h4>
<p>The <strong>Image</strong> widget is for showing pictures. You can load images from the internet or your app’s assets.</p>
<pre><code class="lang-dart">Image.network(
  <span class="hljs-string">'https://flutter.dev/images/flutter-logo-sharing.png'</span>,
  width: <span class="hljs-number">100</span>,
  height: <span class="hljs-number">100</span>,
);
</code></pre>
<p>The <strong>Image</strong> widget is for showing pictures. You can load images from the internet, your phone, or your app’s assets.</p>
<h4 id="heading-7-stack">7. <strong>Stack</strong></h4>
<p>The <strong>Stack</strong> widget lets you place widgets on top of each other, like layers.</p>
<pre><code class="lang-dart">Stack(
  children: [
    Container(width: <span class="hljs-number">100</span>, height: <span class="hljs-number">100</span>, color: Colors.red),
    Positioned(
      top: <span class="hljs-number">20</span>,
      left: <span class="hljs-number">20</span>,
      child: Container(width: <span class="hljs-number">50</span>, height: <span class="hljs-number">50</span>, color: Colors.blue),
    ),
  ],
);
</code></pre>
<p>The <strong>Stack</strong> widget lets you place widgets on top of each other, like layers.</p>
<h4 id="heading-8-row-and-column">8. <strong>Row</strong> and <strong>Column</strong></h4>
<p>These widgets arrange children in a horizontal (Row) or vertical (Column) direction.</p>
<p><strong>Row Example:</strong></p>
<pre><code class="lang-dart">Row(
  mainAxisAlignment: MainAxisAlignment.spaceEvenly,
  children: [
    Icon(Icons.star, size: <span class="hljs-number">50</span>, color: Colors.red),
    Icon(Icons.star, size: <span class="hljs-number">50</span>, color: Colors.green),
    Icon(Icons.star, size: <span class="hljs-number">50</span>, color: Colors.blue),
  ],
);
</code></pre>
<p><strong>Column Example:</strong></p>
<pre><code class="lang-dart">Column(
  mainAxisAlignment: MainAxisAlignment.center,
  children: [
    Text(<span class="hljs-string">'First Item'</span>),
    Text(<span class="hljs-string">'Second Item'</span>),
    Text(<span class="hljs-string">'Third Item'</span>),
  ],
);
</code></pre>
<p>These widgets arrange children in a horizontal (Row) or vertical (Column) direction.</p>
<h4 id="heading-9-listview">9. <strong>ListView</strong></h4>
<p>Use the <strong>ListView</strong> widget to create scrollable lists of widgets.</p>
<pre><code class="lang-dart">ListView(
  children: [
    ListTile(title: Text(<span class="hljs-string">'Item 1'</span>)),
    ListTile(title: Text(<span class="hljs-string">'Item 2'</span>)),
    ListTile(title: Text(<span class="hljs-string">'Item 3'</span>)),
  ],
);
</code></pre>
<p>Use the <strong>ListView</strong> widget to create scrollable lists of widgets.</p>
<h4 id="heading-10-padding">10. <strong>Padding</strong></h4>
<p>The <strong>Padding</strong> widget adds space around a widget.</p>
<pre><code class="lang-dart">Padding(
  padding: EdgeInsets.all(<span class="hljs-number">16.0</span>),
  child: Text(<span class="hljs-string">'Padded Text'</span>),
);
</code></pre>
<p>The <strong>Padding</strong> widget adds space around a widget.</p>
<h4 id="heading-11-elevatedbutton">11. <strong>ElevatedButton</strong></h4>
<p>This widget creates a button with some elevation, making it look raised.</p>
<pre><code class="lang-dart">ElevatedButton(
  onPressed: () {
    <span class="hljs-built_in">print</span>(<span class="hljs-string">'Button Pressed!'</span>);
  },
  child: Text(<span class="hljs-string">'Click Me'</span>),
);
</code></pre>
<p>This widget creates a button with some elevation, making it look raised.</p>
<h4 id="heading-12-icon">12. <strong>Icon</strong></h4>
<p>The <strong>Icon</strong> widget displays icons, like those used for navigation or actions.</p>
<pre><code class="lang-dart">Icon(
  Icons.thumb_up,
  size: <span class="hljs-number">50</span>,
  color: Colors.blue,
);
</code></pre>
<p>The <strong>Icon</strong> widget displays icons, like those used for navigation or actions.</p>
<h4 id="heading-13-card">13. <strong>Card</strong></h4>
<p>The <strong>Card</strong> widget gives a material design card look to your content.</p>
<pre><code class="lang-dart">Card(
  child: Padding(
    padding: EdgeInsets.all(<span class="hljs-number">16.0</span>),
    child: Text(<span class="hljs-string">'This is a Card!'</span>),
  ),
  elevation: <span class="hljs-number">4</span>,
);
</code></pre>
<p>The <strong>Card</strong> widget gives a material design card look to your content.</p>
<h4 id="heading-14-expanded">14. <strong>Expanded</strong></h4>
<p>The <strong>Expanded</strong> widget lets a child widget take up available space within a Row or Column.</p>
<pre><code class="lang-dart">Row(
  children: [
    Expanded(
      child: Container(color: Colors.red, height: <span class="hljs-number">100</span>),
    ),
    Expanded(
      child: Container(color: Colors.green, height: <span class="hljs-number">100</span>),
    ),
  ],
);
</code></pre>
<p>The <strong>Expanded</strong> widget lets a child widget take up available space within a Row or Column.</p>
<h4 id="heading-15-textfield">15. <strong>TextField</strong></h4>
<p>The <strong>TextField</strong> widget lets users input text.</p>
<pre><code class="lang-dart">TextField(
  decoration: InputDecoration(
    labelText: <span class="hljs-string">'Enter your name'</span>,
    border: OutlineInputBorder(),
  ),
);
</code></pre>
<p>The <strong>TextField</strong> widget lets users input text.</p>
<h4 id="heading-16-appbar">16. <strong>AppBar</strong></h4>
<p>The <strong>AppBar</strong> widget provides a title bar at the top of the screen.</p>
<pre><code class="lang-dart">AppBar(
  title: Text(<span class="hljs-string">'AppBar Example'</span>),
  backgroundColor: Colors.blue,
);
</code></pre>
<p>The <strong>AppBar</strong> widget provides a title bar at the top of the screen.</p>
<h4 id="heading-17-alertdialog">17. <strong>AlertDialog</strong></h4>
<p>The <strong>AlertDialog</strong> widget shows a pop-up dialog box.</p>
<pre><code class="lang-dart">AlertDialog(
  title: Text(<span class="hljs-string">'Alert'</span>),
  content: Text(<span class="hljs-string">'This is an alert dialog.'</span>),
  actions: [
    TextButton(
      onPressed: () {},
      child: Text(<span class="hljs-string">'OK'</span>),
    ),
  ],
);
</code></pre>
<p>The <strong>AlertDialog</strong> widget shows a pop-up dialog box.</p>
<h4 id="heading-18-checkbox">18. <strong>Checkbox</strong></h4>
<p>The <strong>Checkbox</strong> widget is for toggling options on or off.</p>
<pre><code class="lang-dart">Checkbox(
  value: <span class="hljs-keyword">true</span>,
  onChanged: (<span class="hljs-built_in">bool?</span> newValue) {
    <span class="hljs-built_in">print</span>(<span class="hljs-string">'Checkbox toggled!'</span>);
  },
);
</code></pre>
<p>The <strong>Checkbox</strong> widget is for toggling options on or off.</p>
<h4 id="heading-19-slider">19. <strong>Slider</strong></h4>
<p>The <strong>Slider</strong> widget lets users select a value by sliding a thumb along a track.</p>
<h4 id="heading-20-gesturedetector">20. <strong>GestureDetector</strong></h4>
<p>The <strong>GestureDetector</strong> widget allows you to detect gestures like taps, swipes, and pinches.</p>
<h3 id="heading-conclusion">Conclusion</h3>
<p>Widgets are the heart of <strong>Flutter</strong>. They make creating beautiful and functional apps straightforward and fun. By mastering the most commonly used widgets, you’ll be well on your way to building amazing apps. Remember, every great app starts with small blocks — just like LEGO!</p>
]]></content:encoded></item><item><title><![CDATA[Flutter and MOMO: A Recipe for Building Great App]]></title><description><![CDATA[Imagine you’re running a MOMO stall at a busy market. Every customer has unique demands—some want kothey, some jhol, and others prefer plain steamed MOMO. You need to manage everything seamlessly: preparing ingredients, customizing orders, and servin...]]></description><link>https://notes.bigyantimilsina.com.np/flutter-and-momo-a-recipe-for-building-great-app</link><guid isPermaLink="true">https://notes.bigyantimilsina.com.np/flutter-and-momo-a-recipe-for-building-great-app</guid><category><![CDATA[Flutter]]></category><category><![CDATA[momo]]></category><dc:creator><![CDATA[Bigyanic]]></dc:creator><pubDate>Tue, 24 Dec 2024 08:37:41 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/bl4YpBZKZqM/upload/5a7d553a72be3a56e96475665de36b2a.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Imagine you’re running a <strong>MOMO</strong> stall at a busy market. Every customer has unique demands—some want <strong>kothey</strong>, some <strong>jhol</strong>, and others prefer plain <strong>steamed</strong> MOMO. You need to manage everything seamlessly: preparing ingredients, customizing orders, and serving with a smile. Now, think of building a mobile app. <strong>Sounds unrelated?</strong> Not really!</p>
<p>Creating a Flutter app is just like running a successful MOMO business. In both, you need the <strong>right tools, well-organized processes, and the ability to deliver exactly what your customers (or users) want</strong>. Just as you need a perfect recipe, skilled cooks, and a reliable stove for your stall, you need Dart, widgets, and a rendering engine to create your app.</p>
<p><strong><mark>Let’s explore the basics of Flutter through the lens of MOMOs.</mark></strong></p>
<h3 id="heading-what-is-flutter"><strong>What is Flutter?</strong></h3>
<p>Flutter is like the <strong>manager</strong> of your MOMO stall. It ensures everything runs smoothly, from preparing MOMOs to serving customers.</p>
<p>It’s an open-source UI toolkit created by Google that helps you build apps for multiple platforms—iOS, Android, web, and desktop—using a single codebase.</p>
<p><strong>Flutter allows you to:</strong></p>
<ul>
<li><p>Design beautiful user interfaces (just like serving perfectly folded MOMO).</p>
</li>
<li><p>Handle animations, gestures, and interactions seamlessly.</p>
</li>
<li><p>Deliver consistent experiences across platforms, no matter where your “MOMO stall” is set up.</p>
</li>
</ul>
<h3 id="heading-what-is-dart"><strong>What is Dart?</strong></h3>
<p>Dart, the <strong>programming language behind Flutter</strong>, is like the recipe for your MOMO. It gives you clear instructions for preparing the dish—how much flour, meat, and spices to use. Dart is:</p>
<ul>
<li><p><strong>Simple:</strong> Easy to learn, just like a basic MOMO recipe.</p>
</li>
<li><p><strong>Flexible</strong>: Allows you to create complex apps, much like how you can make jhol MOMO, kothey MOMO, or even chocolate MOMO with the same ingredients.</p>
</li>
<li><p><strong>Efficient</strong>: With features like hot reload, you can adjust your code (or recipe) and see changes instantly, without restarting your app.</p>
</li>
</ul>
<h3 id="heading-widgets-the-ingredients"><strong>Widgets: The Ingredients</strong></h3>
<p>Widgets are the individual ingredients that come together to make a MOMO.</p>
<p>In Flutter, <mark>everything is a widget</mark>—<em>text, buttons, images, layouts, and even animations.</em></p>
<p><strong>Types of Widgets:</strong></p>
<ul>
<li><p><strong>Stateless Widgets:</strong></p>
<ul>
<li>These are like the flour in MOMO—they stay the same and don’t change.</li>
</ul>
</li>
<li><p><strong>Stateful Widgets:</strong></p>
<ul>
<li>These are like the chili level in jhol—they can be adjusted based on customer (user) preferences.</li>
</ul>
</li>
</ul>
<p><strong><em>Widgets work together to create the app’s user interface, just like ingredients come together to make the perfect MOMO.</em></strong></p>
<h3 id="heading-the-build-method-the-cooking-process"><strong>The Build Method: The Cooking Process</strong></h3>
<p>The build() method in Flutter is like the MOMO cooking process. It:</p>
<ul>
<li><p>Assembles all the ingredients (widgets) together to prepare the final dish (your app screen).</p>
</li>
<li><p>Ensures the MOMOs (UI elements) are arranged properly on the plate (screen layout).</p>
</li>
</ul>
<p><em>Every time you make a change to the ingredients or presentation, the build method ensures the final dish is updated accordingly.</em></p>
<h3 id="heading-rendering-engine-the-cooking-stove">Rendering Engine: The Cooking Stove</h3>
<p>Flutter uses its own rendering engine called <strong>Skia</strong>. This is like the stove you use to cook MOMOs. It:</p>
<ul>
<li><p>Ensures consistent cooking, whether you’re serving MOMO in Pokhara, Kathmandu, or Berlin (iOS, Android, or web).</p>
</li>
<li><p>Lets you create visually stunning designs (perfectly cooked and presented MOMOs).</p>
</li>
</ul>
<h3 id="heading-hot-reload-adding-extra-jhol-instantly"><strong>Hot Reload: Adding Extra Jhol Instantly</strong></h3>
<p>Flutter’s hot reload is like quickly adding more jhol MOMO to a customer’s plate <mark>without making them wait</mark>. It allows you to:</p>
<ul>
<li><p>Make changes to your code instantly.</p>
</li>
<li><p>See updates in real-time without restarting the app.</p>
</li>
</ul>
<p><em>This feature saves time and makes development super efficient, just like quickly responding to customer requests at your stall.</em></p>
<h3 id="heading-putting-it-all-together"><strong>Putting It All Together</strong></h3>
<p><strong>When Flutter (the manager), Dart (the recipe), and widgets (the ingredients) come together, you get an app that runs as efficiently as a busy MOMO stall. Whether you’re building a simple app or a complex one, the process remains smooth, scalable, and enjoyable.</strong></p>
<p><strong>Just as every MOMO has its unique taste, every app you build with Flutter will have its unique flair. So, roll up your sleeves, grab your ingredients (code), and start creating your masterpiece!</strong></p>
]]></content:encoded></item><item><title><![CDATA[From Educator to Developer: Starting with Flutter]]></title><description><![CDATA[Today marks the start of a new journey—and it’s an extra special day because it’s my 25th birthday! I am kicking off my learning journey with Flutter, and this blog will serve as a weekly checkpoint to document my progress, reflect on my experiences,...]]></description><link>https://notes.bigyantimilsina.com.np/from-educator-to-developer-starting-with-flutter</link><guid isPermaLink="true">https://notes.bigyantimilsina.com.np/from-educator-to-developer-starting-with-flutter</guid><category><![CDATA[Flutter]]></category><category><![CDATA[Flutter Examples]]></category><category><![CDATA[Android]]></category><category><![CDATA[birthday]]></category><category><![CDATA[learning]]></category><category><![CDATA[Learning Journey]]></category><dc:creator><![CDATA[Bigyanic]]></dc:creator><pubDate>Tue, 17 Dec 2024 18:15:42 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/J_IaguGH6rI/upload/6272dc69d9b5a0782a25c8babc120ebf.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Today marks the start of a new journey—and it’s an extra special day because it’s my 25th birthday! I am kicking off my learning journey with Flutter, and this blog will serve as a weekly checkpoint to document my progress, reflect on my experiences, and capture both the struggles and small victories that come along the way.</p>
<p>While I don’t know how many people will stumble upon this, this blog is personal to me—a way to document my progress, hold myself accountable, and look back to see how far I’ve come. It’s my little corner of the internet where I can learn, share my thoughts, and maybe even vent about the challenges of learning something completely new. But if you’re here reading this, I hope you find something valuable, relatable, or even inspiring in my journey.</p>
<h3 id="heading-why-flutter-and-why-now">Why Flutter and Why Now?</h3>
<p>Flutter is an open-source UI software development kit created by Google that enables developers to build beautiful, natively compiled applications for mobile, web, and desktop—all from a single codebase.</p>
<p>But there’s another reason why I’m starting this now. I’m in my mid-20s, and the world feels both full of opportunities and deeply uncertain. Every day, I hear discussions about how AI is replacing jobs. The job market feels like it’s changing faster than we can keep up. As a university teacher, I stand in front of students talking about technology—but deep down, I know I need to adapt, learn, and grow to stay relevant. I want to walk the talk.</p>
<p>I’ve chosen Flutter because it feels like a practical, future-proof skill. It allows me to build apps and bring ideas to life while learning something completely new. My goal is to upskill, enjoy the process of learning, and eventually land a job in this evolving industry.</p>
<h3 id="heading-my-learning-goals">My Learning Goals</h3>
<p>I know this won’t be easy. Learning something new rarely is. But I’m ready for the challenge. My goals are:</p>
<ul>
<li><p><strong>Understand the Basics</strong>: Start with Flutter’s core concepts like widgets, layouts, and state management.</p>
</li>
<li><p><strong>Learn Dart</strong>: Since Dart is new to me, I’ll focus on mastering its syntax and unique features.</p>
</li>
<li><p><strong>Build Things</strong>: The only way to learn is to build. Even if it’s a tiny project that no one will see, it counts.</p>
</li>
<li><p><strong>Reflect Weekly</strong>: I won’t post daily—I want to focus on learning. Instead, I’ll share my progress once a week. This will include my struggles, what I’ve built, and what I’ve learned.</p>
</li>
</ul>
<h3 id="heading-a-personal-challenge">A Personal Challenge</h3>
<p>This is more than just learning Flutter. It’s a challenge to myself. To learn something new, to step outside of my comfort zone, and to make the most of this uncertain time. I want to prove to myself that I can adapt, grow, and enjoy the process without worrying too much about where I’ll end up.</p>
<h3 id="heading-final-thought">Final Thought</h3>
<p>If you’ve stumbled upon this post somehow, thank you for being here. I hope this blog will grow into a story of persistence, learning, and small victories. Today, on my 25th birthday, I’m taking the first step toward something new.</p>
<h3 id="heading-heres-to-learning-growing-and-buildingone-week-at-a-time"><strong>Here’s to learning, growing, and building—one week at a time. 🚀</strong></h3>
]]></content:encoded></item></channel></rss>