<?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" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Complete Flutter Guide - Medium]]></title>
        <description><![CDATA[Flutter complete course from absolute beginner to advance topics - Medium]]></description>
        <link>https://medium.com/complete-flutter-guide?source=rss----8a2bd17faae1---4</link>
        <image>
            <url>https://cdn-images-1.medium.com/proxy/1*TGH72Nnw24QL3iV9IOm4VA.png</url>
            <title>Complete Flutter Guide - Medium</title>
            <link>https://medium.com/complete-flutter-guide?source=rss----8a2bd17faae1---4</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Fri, 13 Nov 2026 01:54:21 GMT</lastBuildDate>
        <atom:link href="https://medium.com/feed/complete-flutter-guide" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com/" rel="hub"/>
        <item>
            <title><![CDATA[Images in Flutter]]></title>
            <link>https://medium.com/complete-flutter-guide/images-in-flutter-9d9cfff0b695?source=rss----8a2bd17faae1---4</link>
            <guid isPermaLink="false">https://medium.com/p/9d9cfff0b695</guid>
            <category><![CDATA[flutter]]></category>
            <dc:creator><![CDATA[Haider Ali]]></dc:creator>
            <pubDate>Tue, 25 Jun 2024 16:53:14 GMT</pubDate>
            <atom:updated>2024-06-25T16:53:14.829Z</atom:updated>
            <content:encoded><![CDATA[<p>Most of the time Flutter apps need images. Images are displayed in Flutter using Image widget. It comes with different variations like:</p><pre>Image(image: NetworkImage(&#39;https://....&#39;))<br>Image.network(&#39;https://...&#39;)<br>Image.asset(&#39;assets/images/filename&#39;)</pre><p>pubspec.yaml</p><pre>flutter:<br>  uses-material-design: true<br>  assets:<br>    - assets/images/nature.jpg</pre><p>main.dart</p><pre>import &#39;package:flutter/material.dart&#39;;<br><br>void main() {<br>  runApp(const MyApp());<br>}<br><br>class MyApp extends StatelessWidget {<br>  const MyApp({super.key});<br>  @override<br>  Widget build(BuildContext context) {<br>    return MaterialApp(<br>      title: &#39;Flutter Image Demo&#39;,<br>      theme: ThemeData(<br>        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),<br>        useMaterial3: true,<br>      ),<br>      home: const MyHomePage(title: &#39;Image Demo&#39;),<br>    );<br>  }<br>}<br><br>class MyHomePage extends StatefulWidget {<br>  const MyHomePage({super.key, required this.title});<br>  final String title;<br><br>  @override<br>  State&lt;MyHomePage&gt; createState() =&gt; _MyHomePageState();<br>}<br><br>class _MyHomePageState extends State&lt;MyHomePage&gt; {<br><br>  @override<br>  Widget build(BuildContext context) {<br>    return Scaffold(<br>      appBar: AppBar(<br>        backgroundColor: Theme.of(context).colorScheme.inversePrimary,<br>        title: Text(widget.title),<br>      ),<br>      body: Center(<br>        child: ListView(<br><br>          children: &lt;Widget&gt;[<br>            Image(<br>              image: NetworkImage(&#39;https://images.unsplash.com/photo-1715329499438-90d5632dbcf3?w=600&amp;auto=format&amp;fit=crop&amp;q=60&amp;ixlib=rb-4.0.3&amp;ixid=M3wxMjA3fDB8MHxlZGl0b3JpYWwtZmVlZHwzMHx8fGVufDB8fHx8fA%3D%3D&#39;),<br>            ),<br>            Image.network(&#39;https://flutter.github.io/assets-for-api-docs/assets/widgets/owl-2.jpg&#39;),<br>            Image.asset(&#39;assets/images/nature.jpg&#39;)<br>          ],<br>        ),<br>      ),<br>    );<br>  }<br>}</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/317/1*FbXjRlw4n2GUBx1i6FsmOQ.png" /></figure><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FdeUQlw6uLR0&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DdeUQlw6uLR0&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/1028a8cc44f66207f68b8632df03fe9f/href">https://medium.com/media/1028a8cc44f66207f68b8632df03fe9f/href</a></iframe><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=9d9cfff0b695" width="1" height="1" alt=""><hr><p><a href="https://medium.com/complete-flutter-guide/images-in-flutter-9d9cfff0b695">Images in Flutter</a> was originally published in <a href="https://medium.com/complete-flutter-guide">Complete Flutter Guide</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Toast in Flutter]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://medium.com/complete-flutter-guide/toast-in-flutter-86b99dd81efc?source=rss----8a2bd17faae1---4"><img src="https://cdn-images-1.medium.com/max/600/1*OIrQT28FZzSujmt93zXWyw.png" width="600"></a></p><p class="medium-feed-snippet">In Flutter, Toast isn&#x2019;t a built-in widget, but it&#x2019;s a common term used for lightweight pop-up messages that appear very briefly, typically&#x2026;</p><p class="medium-feed-link"><a href="https://medium.com/complete-flutter-guide/toast-in-flutter-86b99dd81efc?source=rss----8a2bd17faae1---4">Continue reading on Complete Flutter Guide »</a></p></div>]]></description>
            <link>https://medium.com/complete-flutter-guide/toast-in-flutter-86b99dd81efc?source=rss----8a2bd17faae1---4</link>
            <guid isPermaLink="false">https://medium.com/p/86b99dd81efc</guid>
            <category><![CDATA[flutter]]></category>
            <category><![CDATA[fluttertoast]]></category>
            <dc:creator><![CDATA[Haider Ali]]></dc:creator>
            <pubDate>Tue, 11 Jun 2024 08:37:48 GMT</pubDate>
            <atom:updated>2025-01-12T19:27:49.714Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[SnackBar in Flutter]]></title>
            <link>https://medium.com/complete-flutter-guide/snackbar-in-flutter-9561009ed80c?source=rss----8a2bd17faae1---4</link>
            <guid isPermaLink="false">https://medium.com/p/9561009ed80c</guid>
            <category><![CDATA[flutter]]></category>
            <dc:creator><![CDATA[Haider Ali]]></dc:creator>
            <pubDate>Tue, 11 Jun 2024 06:55:05 GMT</pubDate>
            <atom:updated>2024-06-11T06:55:05.059Z</atom:updated>
            <content:encoded><![CDATA[<p>In Flutter, a Snackbar is a lightweight, temporary message that appears at the bottom of the screen to provide brief user feedback. It’s ideal for informing users about actions, errors, or confirmations without interrupting the main app flow.</p><p><strong>Key characteristics of Snackbars:</strong></p><ul><li><strong>Transient:</strong> They stay visible for a short duration (typically 5–10 seconds) and then disappear automatically.</li><li><strong>Informative:</strong> They display a concise message to the user, often accompanied by an icon for better clarity.</li><li><strong>Optional Action:</strong> You can optionally include an action button that the user can tap to perform a related action.</li></ul><p><strong>Use Cases for Snackbars:</strong></p><ul><li><strong>Success/Error Messages:</strong> Notify users about the outcome of an action (e.g., “Item added to cart!” or “Login failed”).</li><li><strong>Undo Actions:</strong> Provide an option to undo a recent action (e.g., “Item deleted. Undo?”).</li><li><strong>Background Tasks:</strong> Inform users about ongoing background processes (e.g., “Image uploading…”).</li></ul><p><strong>Simple Snackbar Example:</strong></p><p>Here’s an example of a Snackbar displayed after a button press:</p><pre>ElevatedButton(<br>  onPressed: () {<br>    ScaffoldMessenger.of(context).showSnackBar(<br>      SnackBar(<br>        content: Text(&#39;Item added to cart!&#39;),<br>        action: SnackBarAction(<br>          label: &#39;Undo&#39;,<br>          onPressed: () {<br>            // Code to undo the action (optional)<br>            print(&#39;Undoing item addition&#39;);<br>          },<br>        ),<br>      ),<br>    );<br>  },<br>  child: Text(&#39;Add to Cart&#39;),<br>),</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/540/1*GoaPNKyPnfSCaj5rPsmdVg.png" /></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=9561009ed80c" width="1" height="1" alt=""><hr><p><a href="https://medium.com/complete-flutter-guide/snackbar-in-flutter-9561009ed80c">SnackBar in Flutter</a> was originally published in <a href="https://medium.com/complete-flutter-guide">Complete Flutter Guide</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[BottomSheet in Flutter]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://medium.com/complete-flutter-guide/bottomsheet-in-flutter-c255b4d40f64?source=rss----8a2bd17faae1---4"><img src="https://cdn-images-1.medium.com/max/600/1*j8OuNixZGOKMZRB92Fo6iA.png" width="600"></a></p><p class="medium-feed-snippet">A Bottom Sheet is a UI element that slides up from the bottom of the screen. It&#x2019;s a versatile way to present supplementary content or&#x2026;</p><p class="medium-feed-link"><a href="https://medium.com/complete-flutter-guide/bottomsheet-in-flutter-c255b4d40f64?source=rss----8a2bd17faae1---4">Continue reading on Complete Flutter Guide »</a></p></div>]]></description>
            <link>https://medium.com/complete-flutter-guide/bottomsheet-in-flutter-c255b4d40f64?source=rss----8a2bd17faae1---4</link>
            <guid isPermaLink="false">https://medium.com/p/c255b4d40f64</guid>
            <category><![CDATA[flutter]]></category>
            <dc:creator><![CDATA[Haider Ali]]></dc:creator>
            <pubDate>Tue, 11 Jun 2024 04:47:26 GMT</pubDate>
            <atom:updated>2025-05-06T08:37:11.943Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[Column widget in Flutter]]></title>
            <link>https://medium.com/complete-flutter-guide/column-widget-in-flutter-e616593ab282?source=rss----8a2bd17faae1---4</link>
            <guid isPermaLink="false">https://medium.com/p/e616593ab282</guid>
            <category><![CDATA[flutter-column-widget]]></category>
            <category><![CDATA[flutter]]></category>
            <dc:creator><![CDATA[Haider Ali]]></dc:creator>
            <pubDate>Tue, 11 Jun 2024 04:24:16 GMT</pubDate>
            <atom:updated>2024-06-11T04:23:50.468Z</atom:updated>
            <content:encoded><![CDATA[<p>A Column widget is a fundamental building block for arranging UI elements vertically in your Flutter app. It displays its child widgets one below the other, just like stacking items in a column. Columns are essential for creating organized layouts and are one of the most commonly used widgets in Flutter development.</p><p><strong>Key Points about Columns</strong></p><ul><li><strong>Vertical Arrangement:</strong> Children are stacked on top of each other, with the first child at the top.</li><li><strong>Multiple Children:</strong> A Column can hold multiple child widgets. These child widgets can be anything from Text and Icons to other Rows or even more Columns for nested layouts.</li><li><strong>Customization:</strong> You can control how the children are positioned within the Column using properties like mainAxisAlignment and crossAxisAlignment.</li><li><strong>No Scrolling:</strong> By default, a Column doesn’t provide scrolling functionality. If you have more content than can fit on the screen, you’ll need to use a widget like ListView for scrollable content.</li></ul><pre>import &#39;package:flutter/material.dart&#39;;<br><br>void main() {<br>  runApp(const MyApp());<br>}<br><br>class MyApp extends StatelessWidget {<br>  const MyApp({super.key});<br>  @override<br>  Widget build(BuildContext context) {<br>    return MaterialApp(<br>      title: &#39;Flutter Demo&#39;,<br>      theme: ThemeData(<br>        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),<br>        useMaterial3: true,<br>      ),<br>      home: const MyHomePage(title: &#39;Flutter Demo Home Page&#39;),<br>    );<br>  }<br>}<br><br>class MyHomePage extends StatefulWidget {<br>  const MyHomePage({super.key, required this.title});<br>  final String title;<br><br>  @override<br>  State&lt;MyHomePage&gt; createState() =&gt; _MyHomePageState();<br>}<br><br>class _MyHomePageState extends State&lt;MyHomePage&gt; {<br>  @override<br>  Widget build(BuildContext context) {<br>    return Scaffold(<br>      appBar: AppBar(<br>        backgroundColor: Theme.of(context).colorScheme.inversePrimary,<br>        title: Text(widget.title),<br>      ),<br>      body: Column(<br>        children: [<br><br>          Text(&#39;Column Demo&#39;, style: TextStyle(fontSize: 30),),<br>          Container(<br>            height: 100,<br>            color: Colors.blue,<br>            margin: EdgeInsets.all(5),<br>          ),<br>          Container(<br>            height: 100,<br>            color: Colors.yellow,<br>            margin: EdgeInsets.all(5),<br>          ),<br>          Container(<br>            height: 100,<br>            color: Colors.green,<br>            margin: EdgeInsets.all(5),<br>          ),<br><br>        ],<br>      )<br>    );<br>  }<br><br>}</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/319/1*WvqUw4f2ZgEb-UEPcIav1Q.png" /></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=e616593ab282" width="1" height="1" alt=""><hr><p><a href="https://medium.com/complete-flutter-guide/column-widget-in-flutter-e616593ab282">Column widget in Flutter</a> was originally published in <a href="https://medium.com/complete-flutter-guide">Complete Flutter Guide</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Storing Data in SQLite database in Flutter]]></title>
            <link>https://medium.com/complete-flutter-guide/sqlite-database-in-flutter-61d4ba497652?source=rss----8a2bd17faae1---4</link>
            <guid isPermaLink="false">https://medium.com/p/61d4ba497652</guid>
            <category><![CDATA[flutter]]></category>
            <category><![CDATA[dart]]></category>
            <dc:creator><![CDATA[Haider Ali]]></dc:creator>
            <pubDate>Tue, 04 Jun 2024 09:45:58 GMT</pubDate>
            <atom:updated>2024-06-09T17:32:51.853Z</atom:updated>
            <content:encoded><![CDATA[<p>In Flutter apps we need persistent data storage. This means storing data/information within the app itself, even when the app is closed or the device is turned off. Here’s where SQLite comes in.</p><p><strong>What is SQLite?</strong></p><p>SQLite is a lightweight relational database management system (RDBMS) that’s embedded within the application.</p><p><strong>Why Use SQLite in Flutter?</strong></p><p>Here are some key benefits of using SQLite with Flutter:</p><ul><li><strong>Lightweight and Fast:</strong> SQLite boasts a small footprint and efficient performance, perfect for mobile apps where resources are limited.</li><li><strong>Serverless and Easy to Use:</strong> There’s no need to set up or manage a separate server. SQLite integrates seamlessly into your Flutter project.</li><li><strong>Cross-Platform Compatibility:</strong> SQLite works across Android, iOS, and even web platforms where Flutter is applicable.</li></ul><p><strong>Getting Started with SQLite in Flutter</strong></p><p>To leverage SQLite in your Flutter applications, you’ll utilize the popular sqflite package. This package provides a Dart API for interacting with the SQLite database. It offers functionalities for:</p><ul><li>Creating and opening databases</li><li>Defining tables and columns</li><li>Performing CRUD operations (Create, Read, Update, Delete) on data</li><li>Querying the database to retrieve specific information</li></ul><h4>Step#1: Adding dependencies</h4><p>In order to use SQLite in Flutter we need two dependencies i.e. sqflite and path. Add these dependencies in the pubspec.yaml file.</p><pre>dependencies:<br>  sqflite: ^2.3.3<br>  path: ^1.9.0</pre><h4>Step#2: Create database_service.dart in lib/services directory</h4><p>After adding dependencies we will create a Database Service in database_service.dart. The Database Service will provide the following services:</p><p>Create database</p><p>Create tables</p><p>Add/insert data in tables</p><p>Retrieve data from tables</p><p>Update data in tables</p><p>Delete data from tables</p><pre>import &#39;package:path/path.dart&#39;;<br>import &#39;package:sqflite/sqflite.dart&#39;;<br>import &#39;package:sqflite/sqlite_api.dart&#39;;<br><br>class DatabaseService {<br>  static Database? db;<br><br>  Future&lt;Database&gt; getDatabase() async {<br>    final dbDirPath = await getDatabasesPath();<br>    final dbPath = join(dbDirPath, &quot;student_db.db&quot;);<br>    final database = await openDatabase(<br>        dbPath,<br>        onCreate: (db, version) {<br>          db.execute(&#39;&#39;&#39;<br>            CREATE TABLE students(reg_no TEXT, name TEXT NOT NULL, cell_no TEXT) <br>          &#39;&#39;&#39;);<br>        },<br>        version: 1<br>    );<br>    return database;<br>  }<br><br>  Future&lt;Database&gt; getDB() async {<br>    if (db != null ) return db!;<br>    db = await getDatabase();<br>    return db!;<br>  }<br><br>  Future&lt;void&gt; addStudent(String reg_no, String name, cell_no) async {<br>    final db = await getDB();<br><br>      await db.insert(<br>        &quot;students&quot;,<br>        { &quot;reg_no&quot;: reg_no,<br>          &quot;name&quot;: name,<br>          &quot;cell_no&quot;: cell_no<br>        }<br>    );<br>  }<br><br>  Future&lt;List&lt;Map&gt;&gt; getStudents() async {<br>    final db = await getDB();<br>    final data = await db.query(&quot;students&quot;);<br>    for(var d in data) {<br>      print(d);<br>    }<br>    return data;<br>  }<br>}</pre><h4>Step-3: User interface for using Database Service (Adding and retrieving data from the SQLite database)</h4><p>main.dart</p><pre>import &#39;package:flutter/material.dart&#39;;<br>import &#39;package:sqlite_demo/services/database_service.dart&#39;;<br><br>void main() {<br>  runApp(const MyApp());<br>}<br><br>class MyApp extends StatelessWidget {<br>  const MyApp({super.key});<br>  @override<br>  Widget build(BuildContext context) {<br>    return MaterialApp(<br>      title: &#39;Flutter Demo&#39;,<br>      theme: ThemeData(<br>        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),<br>        useMaterial3: true,<br>      ),<br>      home: const MyHomePage(title: &#39;Flutter Demo Home Page&#39;),<br>    );<br>  }<br>}<br><br>class MyHomePage extends StatefulWidget {<br>  const MyHomePage({super.key, required this.title});<br>  final String title;<br>  @override<br>  State&lt;MyHomePage&gt; createState() =&gt; _MyHomePageState();<br>}<br><br>class _MyHomePageState extends State&lt;MyHomePage&gt; {<br>  final databaseService = DatabaseService();<br>  String? reg_no, name, cell_no;<br>  TextEditingController tcRegNo = TextEditingController();<br>  TextEditingController tcName = TextEditingController();<br>  TextEditingController tcCellNo = TextEditingController();<br><br>  @override<br>  Widget build(BuildContext context) {<br>    return Scaffold(<br>      body: Column(<br>        children: [<br>          TextField(<br>            decoration: InputDecoration(hintText: &quot;Reg. No.&quot;),<br>            controller: tcRegNo,<br>          ),<br>          TextField(<br>            decoration: InputDecoration(hintText: &quot;Name&quot;),<br>            controller: tcName,<br>          ),<br>          TextField(<br>            decoration: InputDecoration(hintText: &quot;Cell No&quot;),<br>            controller: tcCellNo,<br>          ),<br>          ElevatedButton(onPressed: addRecord, child: Text(&quot;Save&quot;)),<br>          ElevatedButton(onPressed: printData, child: Text(&quot;Print Data&quot;)),<br>         <br>        ]<br>            ),<br><br><br>    );<br><br>  }<br><br>void addRecord() async {<br>    await databaseService.addStudent(tcRegNo.text, tcName.text, tcCellNo.text);<br>  }<br><br>void printData() async {<br>  await databaseService.getStudents();<br>}<br><br>Widget StudentsList() {<br>    Future&lt;List&lt;Map&lt;String, dynamic&gt;&gt;&gt;? students;<br>    students = dbService.getStudents();<br>    return FutureBuilder&lt;List&lt;Map&lt;String, dynamic&gt;&gt;&gt;(<br>      future: students,<br>      builder: (context, snapshot) {<br>        if (snapshot.hasData) {<br>          return ListView.builder(<br>            itemCount: snapshot.data!.length,<br>            itemBuilder: (context, index) {<br>              final student = snapshot.data![index];<br>              return ListTile(<br>                title: Text(student[&#39;name&#39;]),<br>                subtitle: Text(&#39;Reg No: ${student[&#39;reg_no&#39;]}, Cell No: ${student[&#39;cell_no&#39;]}&#39;),<br>              );<br>            },<br>          );<br>        } else if (snapshot.hasError) {<br>          return Center(child: Text(&#39;Error: ${snapshot.error}&#39;));<br>        }<br>        return Center(child: CircularProgressIndicator());<br>      },<br>    );<br>  }<br><br> <br>}</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/321/1*U0G385bLgSCcQKuSl7d4yg.png" /></figure><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FS4E8OWdccr0%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DS4E8OWdccr0&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FS4E8OWdccr0%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="640" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/e6929e50ed58018097cba504031493f3/href">https://medium.com/media/e6929e50ed58018097cba504031493f3/href</a></iframe><p>In the second video I will explain how to retrieve records from SQLite database table and display it in ListView in Flutter.</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2F9Gin7sZaWKg%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D9Gin7sZaWKg&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2F9Gin7sZaWKg%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/cb00b172ec0774906a47351e1945df3a/href">https://medium.com/media/cb00b172ec0774906a47351e1945df3a/href</a></iframe><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=61d4ba497652" width="1" height="1" alt=""><hr><p><a href="https://medium.com/complete-flutter-guide/sqlite-database-in-flutter-61d4ba497652">Storing Data in SQLite database in Flutter</a> was originally published in <a href="https://medium.com/complete-flutter-guide">Complete Flutter Guide</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[BottomNavigationBar in Flutter]]></title>
            <link>https://medium.com/complete-flutter-guide/bottomnavigationbar-in-flutter-e6b7fc44a9f3?source=rss----8a2bd17faae1---4</link>
            <guid isPermaLink="false">https://medium.com/p/e6b7fc44a9f3</guid>
            <category><![CDATA[flutter]]></category>
            <category><![CDATA[mobile-app-development]]></category>
            <category><![CDATA[dart]]></category>
            <dc:creator><![CDATA[Haider Ali]]></dc:creator>
            <pubDate>Mon, 27 May 2024 10:40:55 GMT</pubDate>
            <atom:updated>2024-05-27T10:32:59.742Z</atom:updated>
            <content:encoded><![CDATA[<h4>main.dart</h4><pre>import &#39;/pages/home.dart&#39;;<br>import &#39;/pages/settings.dart&#39;;<br>import &#39;/pages/about.dart&#39;;<br><br>import &#39;package:flutter/material.dart&#39;;<br>void main() {<br>  runApp(const MyApp());<br>}<br><br>class MyApp extends StatelessWidget {<br>  const MyApp({super.key});<br><br>  @override<br>  Widget build(BuildContext context) {<br><br>    return MaterialApp(<br>      debugShowCheckedModeBanner: false,<br>      title: &#39;Flutter Demo&#39;,<br>      theme: ThemeData(<br>        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),<br>        useMaterial3: true,<br>      ),<br>      home: const MyHomePage(title: &#39;Mobile App Development&#39;),<br>    );<br>  }<br>}<br><br>class MyHomePage extends StatefulWidget {<br>  const MyHomePage({super.key, required this.title});<br>  final String title;<br><br>  @override<br>  State&lt;MyHomePage&gt; createState() =&gt; _MyHomePageState();<br>}<br><br>class _MyHomePageState extends State&lt;MyHomePage&gt; {<br>  final List pages = [HomePage(), AboutPage(), SettingsPage() ];<br>  int selectedPage = 0;<br><br>  void navChanged(int index) {<br><br>    setState(() {<br>      selectedPage= index;<br>    });<br>  }<br>  @override<br>  Widget build(BuildContext context)  {<br>    return Scaffold(<br>        body:  pages[selectedPage],<br>        bottomNavigationBar: BottomNavigationBar(<br>          onTap: navChanged,<br>          items: [<br>            // home<br>            BottomNavigationBarItem(<br>                icon: Icon(Icons.home),<br>                label: &quot;Home&quot;<br>            ),<br><br>            // Profile<br>            BottomNavigationBarItem(<br>                icon: Icon(Icons.person),<br>                label: &quot;Profile&quot;<br>            ),<br><br>            // Settings<br>            BottomNavigationBarItem(<br>                icon: Icon(Icons.settings),<br>                label: &quot;Settrings&quot;<br>            ),<br>          ],<br>        ),<br>    );<br>  }<br>}</pre><h4>home.dart</h4><pre>import &#39;package:flutter/material.dart&#39;;<br><br>class HomePage extends StatelessWidget {<br><br>  @override<br>  Widget build(BuildContext context)  {<br>    return Scaffold(<br>        backgroundColor: Colors.green,<br>        body:  Center(<br>                child: Text(&quot;Home Page&quot;, style: TextStyle(fontSize: 30),),<br>                ),<br>        );<br><br>  }<br>}</pre><h4>about.dart</h4><pre>import &#39;package:flutter/material.dart&#39;;<br><br>class AboutPage extends StatelessWidget {<br><br>  @override<br>  Widget build(BuildContext context)  {<br>    return Scaffold(<br>      backgroundColor: Colors.yellow,<br>      body:  Center(<br>        child: Text(&quot;About Page&quot;, style: TextStyle(fontSize: 30)),<br>      ),<br>    );<br>  }<br>}</pre><h4>settings.dart</h4><pre>import &#39;package:flutter/material.dart&#39;;<br><br>class SettingsPage extends StatelessWidget {<br><br>  @override<br>  Widget build(BuildContext context)  {<br>    return Scaffold(<br>      backgroundColor: Colors.cyan,<br>      body:  Center(<br>        child: Text(&quot;Settings Page&quot;, style: TextStyle(fontSize: 30)),<br>      ),<br>    );<br><br>  }<br>}</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/321/1*Q09T3LNm8iXpWXtf0tI4Mg.png" /><figcaption>home page</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/311/1*jCeIdSF6ciFXFR10-b1DFQ.png" /><figcaption>profile page</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/320/1*6FMcV3MAbq7X6kn_F2EjRg.png" /><figcaption>settings page</figcaption></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=e6b7fc44a9f3" width="1" height="1" alt=""><hr><p><a href="https://medium.com/complete-flutter-guide/bottomnavigationbar-in-flutter-e6b7fc44a9f3">BottomNavigationBar in Flutter</a> was originally published in <a href="https://medium.com/complete-flutter-guide">Complete Flutter Guide</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Navigation in Flutter]]></title>
            <link>https://medium.com/complete-flutter-guide/navigation-in-flutter-9c0ad2234d6f?source=rss----8a2bd17faae1---4</link>
            <guid isPermaLink="false">https://medium.com/p/9c0ad2234d6f</guid>
            <category><![CDATA[flutter]]></category>
            <category><![CDATA[dart]]></category>
            <category><![CDATA[mobile-app-development]]></category>
            <dc:creator><![CDATA[Haider Ali]]></dc:creator>
            <pubDate>Mon, 27 May 2024 10:40:35 GMT</pubDate>
            <atom:updated>2024-05-27T10:33:48.604Z</atom:updated>
            <content:encoded><![CDATA[<p>In Flutter, navigating between different screens is crucial for creating a user-friendly app. These screens, also called routes, are essentially widgets that define what the user sees. Flutter offers a built-in navigation system using the Navigator class. This system allows you to push new routes onto a stack, effectively transitioning to new screens, and pop routes from the stack to return to previous ones.</p><p>To start navigating between pages, you use the Navigator.push, pushNamed, and pop methods.</p><h3>Example</h3><h4>main.dart</h4><pre>import &#39;package:flutter/material.dart&#39;;<br>import &#39;pages/home.dart&#39;;<br><br>void main() {<br>  runApp(const MyApp());<br>}<br><br>class MyApp extends StatelessWidget {<br>  const MyApp({super.key});<br><br>  @override<br>  Widget build(BuildContext context) {<br><br>    return MaterialApp(<br>      debugShowCheckedModeBanner: false,<br>      title: &#39;Flutter Demo&#39;,<br>      theme: ThemeData(<br>        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),<br>        useMaterial3: true,<br>      ),<br>      home: const MyHomePage(title: &#39;Mobile App Development&#39;),<br>    );<br>  }<br>}</pre><h4>home.dart</h4><pre>import &#39;package:cs06/pages/about.dart&#39;;<br>import &#39;package:flutter/material.dart&#39;;<br><br>class MyHomePage extends StatefulWidget {<br>  const MyHomePage({super.key, required this.title});<br>  final String title;<br><br>  @override<br>  State&lt;MyHomePage&gt; createState() =&gt; _MyHomePageState();<br>}<br><br>class _MyHomePageState extends State&lt;MyHomePage&gt; {<br><br><br>  @override<br>  Widget build(BuildContext context)  {<br>    return Scaffold(<br>        appBar: AppBar(<br>          backgroundColor: Theme.of(context).colorScheme.inversePrimary,<br>          title: Text(widget.title),<br>        ),<br>        body:  Center(<br>          child: Column(<br>            mainAxisAlignment: MainAxisAlignment.center,<br>            children: [<br>              Container(child: Text(&quot;Navigation Demo&quot;, <br>                                    style: TextStyle(fontSize: 30),),),<br>              Container(child: Text(&quot;Main Screen&quot;),),<br>              SizedBox(height: 20,),<br>              ElevatedButton(onPressed: aboutScreen, child: Text(&quot;About&quot;))<br>            ],<br>          ),<br>        )<br>    );<br>  }<br>  <br>  void aboutScreen() {<br>    Navigator.push(<br>      context,<br>      MaterialPageRoute(builder: (context) =&gt; const <br>                        AboutPage(title: &quot;About me!&quot;)),<br>    );<br>  }<br>}</pre><h4>about.dart</h4><pre>import &#39;package:flutter/material.dart&#39;;<br><br>class AboutPage extends StatefulWidget {<br>  const AboutPage({super.key, required this.title});<br>  final String title;<br><br>  @override<br>  State&lt;AboutPage&gt; createState() =&gt; _AboutPageState();<br>}<br><br>class _AboutPageState extends State&lt;AboutPage&gt; {<br><br><br>  @override<br>  Widget build(BuildContext context)  {<br>    return Scaffold(<br>        appBar: AppBar(<br>          backgroundColor: Theme.of(context).colorScheme.inversePrimary,<br>          title: Text(widget.title),<br>        ),<br>        body:  Center(<br>          child: Column(<br>            mainAxisAlignment: MainAxisAlignment.center,<br>            children: [<br>              Container(child: Text(&quot;About Screen&quot;),),<br>              SizedBox(height: 20,),<br>              ElevatedButton(onPressed: gotoHome, <br>                      child: Text(&quot;Back to main!&quot;))<br>            ],<br>          ),<br>        )<br>    );<br>  }<br><br>  void gotoHome() {<br>    Navigator.pop(context);<br>  }<br>}</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/423/1*INc_9BpDuoWYdqZW_933Sw.png" /><figcaption>Home screen</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/269/1*3oStWWSOnxErhtexYVDsYw.png" /><figcaption>About Screen</figcaption></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=9c0ad2234d6f" width="1" height="1" alt=""><hr><p><a href="https://medium.com/complete-flutter-guide/navigation-in-flutter-9c0ad2234d6f">Navigation in Flutter</a> was originally published in <a href="https://medium.com/complete-flutter-guide">Complete Flutter Guide</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Organizing files and folders in Flutter project]]></title>
            <link>https://medium.com/complete-flutter-guide/organizing-files-and-folders-in-flutter-project-0e2201ea7c70?source=rss----8a2bd17faae1---4</link>
            <guid isPermaLink="false">https://medium.com/p/0e2201ea7c70</guid>
            <category><![CDATA[mobile-app-development]]></category>
            <category><![CDATA[flutter]]></category>
            <category><![CDATA[dart]]></category>
            <dc:creator><![CDATA[Haider Ali]]></dc:creator>
            <pubDate>Mon, 27 May 2024 10:37:00 GMT</pubDate>
            <atom:updated>2024-05-27T10:34:15.962Z</atom:updated>
            <content:encoded><![CDATA[<p>Working on Flutter projects may result complex set of files and folders if not managed properly. Organizing and placing files in proper folders and files make it easy for developers to manage Flutter apps.</p><p>Different developers may use different approach for saving files and folders. In this article I will show you how I organize my files and folders in my Flutter project.</p><p>Create the following directories/folders in your project directory:</p><blockquote>assets/images</blockquote><blockquote>assets/fonts</blockquote><blockquote>lib/pages</blockquote><blockquote>lib/services</blockquote><blockquote>lib/models</blockquote><blockquote>lib/utils</blockquote><blockquote>lib/widgets</blockquote><p>These folders will hold the resources as follows:</p><p>assets/images: images</p><p>assets/fonts: fonts.</p><p>lib/pages: User interface (UI) files</p><p>lib/models: Classes for data</p><p>lib/utils: Helper classes such as date calculations and data conversion</p><p>lib/widgets: User defined widgets</p><p>lib/services: Helps retrieve data from services over the Internet</p><h4>The main.dart</h4><pre>// main.dart<br><br>import &#39;package:flutter/material.dart&#39;;<br>import &#39;pages/home.dart&#39;;<br><br>void main() {<br>  runApp(const MyApp());<br>}<br><br>class MyApp extends StatelessWidget {<br>  const MyApp({super.key});<br><br>  @override<br>  Widget build(BuildContext context) {<br><br>    return MaterialApp(<br>      debugShowCheckedModeBanner: false,<br>      title: &#39;Flutter Demo&#39;,<br>      theme: ThemeData(<br>        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),<br>        useMaterial3: true,<br>      ),<br>      home: const MyHomePage(title: &#39;Mobile App Development&#39;),<br>    );<br>  }<br>}</pre><p>lib/pages/home.dart</p><pre>// lib/pages/home.dart<br><br>import &#39;package:flutter/material.dart&#39;;<br><br>class MyHomePage extends StatefulWidget {<br>  const MyHomePage({super.key, required this.title});<br>  final String title;<br><br>  @override<br>  State&lt;MyHomePage&gt; createState() =&gt; _MyHomePageState();<br>}<br><br>class _MyHomePageState extends State&lt;MyHomePage&gt; {<br><br><br>  @override<br>  Widget build(BuildContext context)  {<br>    return Scaffold(<br>        appBar: AppBar(<br>          backgroundColor: Theme.of(context).colorScheme.inversePrimary,<br>          title: Text(widget.title),<br>        ),<br>        body:  Center(<br>          child: Column(<br>            mainAxisAlignment: MainAxisAlignment.center,<br>            children: [<br>              Container(child: Text(&quot;Hello World!&quot;),),<br>            ],<br>          ),<br>        )<br>    );<br>  }<br>}</pre><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=0e2201ea7c70" width="1" height="1" alt=""><hr><p><a href="https://medium.com/complete-flutter-guide/organizing-files-and-folders-in-flutter-project-0e2201ea7c70">Organizing files and folders in Flutter project</a> was originally published in <a href="https://medium.com/complete-flutter-guide">Complete Flutter Guide</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Flutter GestureDetector]]></title>
            <link>https://medium.com/complete-flutter-guide/flutter-gesturedetector-a445e5cb492b?source=rss----8a2bd17faae1---4</link>
            <guid isPermaLink="false">https://medium.com/p/a445e5cb492b</guid>
            <category><![CDATA[dart]]></category>
            <category><![CDATA[flutter]]></category>
            <category><![CDATA[mobile-app-development]]></category>
            <dc:creator><![CDATA[Haider Ali]]></dc:creator>
            <pubDate>Mon, 20 May 2024 08:01:38 GMT</pubDate>
            <atom:updated>2024-05-23T10:39:42.208Z</atom:updated>
            <content:encoded><![CDATA[<pre>import &#39;package:flutter/material.dart&#39;;<br><br>void main() {<br>  runApp(const MyApp());<br>}<br><br>class MyApp extends StatelessWidget {<br>  const MyApp({super.key});<br><br>  @override<br>  Widget build(BuildContext context) {<br><br>    return MaterialApp(<br>      debugShowCheckedModeBanner: false,<br>      title: &#39;Flutter Demo&#39;,<br>      theme: ThemeData(<br>        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),<br>        useMaterial3: true,<br>      ),<br>      home: const MyHomePage(title: &#39;GestureDetector Demo&#39;),<br>    );<br>  }<br>}<br><br>class MyHomePage extends StatefulWidget {<br>  const MyHomePage({super.key, required this.title});<br>  final String title;<br><br>  @override<br>  State&lt;MyHomePage&gt; createState() =&gt; _MyHomePageState();<br>}<br><br>class _MyHomePageState extends State&lt;MyHomePage&gt; {<br>  int counter=0;<br>   @override<br>  Widget build(BuildContext context)  {<br><br>     return Scaffold(<br>         appBar: AppBar(<br>           backgroundColor: Theme.of(context).colorScheme.inversePrimary,<br>           title: Text(widget.title),<br>         ),<br>         body: GestureDetector(<br>           onTap: pressed,<br>           child: Column(<br>             //mainAxisAlignment: MainAxisAlignment.start,<br>             children: [<br>               Container(<br>                 alignment: Alignment.center,<br>                 padding: EdgeInsets.all(20),<br>                 color: Colors.blue,<br>                  child: Text(&quot;Click Me!&quot;,),<br>               ),<br>               Text(&quot;Clicked $counter times.&quot;)<br>             ],<br>           )<br>         )<br>     );<br>   }<br>   void pressed() {<br>     setState(() {<br>       counter++;<br>     });<br>   }<br>}</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/541/1*j7crAc-3ftLs2pPN56YjAA.png" /></figure><blockquote>Check <a href="https://www.udemy.com/course/flutter-and-firebase/?referralCode=04B1F35F6411EE7A1BEA">complete course on Udemy</a>.</blockquote><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=a445e5cb492b" width="1" height="1" alt=""><hr><p><a href="https://medium.com/complete-flutter-guide/flutter-gesturedetector-a445e5cb492b">Flutter GestureDetector</a> was originally published in <a href="https://medium.com/complete-flutter-guide">Complete Flutter Guide</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>