<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Suchitkumar Khunt</title>
    <description>The latest articles on Forem by Suchitkumar Khunt (@khuntsr).</description>
    <link>https://forem.com/khuntsr</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F307222%2Fa96c7e4b-6e2b-4207-90db-ce03fcf13fca.png</url>
      <title>Forem: Suchitkumar Khunt</title>
      <link>https://forem.com/khuntsr</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/khuntsr"/>
    <language>en</language>
    <item>
      <title>Marvel Universe App - Built in Flutter + Appwrite</title>
      <dc:creator>Suchitkumar Khunt</dc:creator>
      <pubDate>Mon, 09 May 2022 17:48:52 +0000</pubDate>
      <link>https://forem.com/khuntsr/marvel-universe-app-built-in-flutter-appwrite-51p6</link>
      <guid>https://forem.com/khuntsr/marvel-universe-app-built-in-flutter-appwrite-51p6</guid>
      <description>&lt;h3&gt;
  
  
  Overview of My Submission
&lt;/h3&gt;

&lt;p&gt;Marvel Universe - is a mobile application, built with Flutter and AppWrite to exhibit the marvel cinematic universe, comics, characters and stories.&lt;/p&gt;

&lt;p&gt;I have used the Appwrite Account API and Appwrite Database. I would like to continue work on this app and complete this with using all features of Appwrite. (Appwrite Storage &amp;amp; OAuth2 Providers).&lt;/p&gt;

&lt;p&gt;Fork Project From: &lt;a href="https://github.com/khuntsr/marvel-comics-flutter" rel="noopener noreferrer"&gt;https://github.com/khuntsr/marvel-comics-flutter&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Submission Category:
&lt;/h3&gt;

&lt;p&gt;Mobile Moguls&lt;/p&gt;

&lt;h3&gt;
  
  
  Link to Code
&lt;/h3&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/khuntsr" rel="noopener noreferrer"&gt;
        khuntsr
      &lt;/a&gt; / &lt;a href="https://github.com/khuntsr/marvel-comics-flutter" rel="noopener noreferrer"&gt;
        marvel-comics-flutter
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      marvel-comics-flutter
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Marvel Universe&lt;/h1&gt;

&lt;/div&gt;
&lt;p&gt;Marvel Universe - is a mobile application, built with Flutter and AppWrite to exhibit the marvel cinematic universe, comics, characters and stories.&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/add6d6920b062257318988e1e59cb02414590077669b21c95b8f3cfd51cd9339/68747470733a2f2f61707077726974652e696f2f696d616765732d65652f70726573732f62616467652d70696e6b2d627574746f6e2e737667"&gt;&lt;img src="https://camo.githubusercontent.com/add6d6920b062257318988e1e59cb02414590077669b21c95b8f3cfd51cd9339/68747470733a2f2f61707077726974652e696f2f696d616765732d65652f70726573732f62616467652d70696e6b2d627574746f6e2e737667" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;



&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/khuntsr/marvel-comics-flutter" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;h3&gt;
  
  
  Additional Resources / Info
&lt;/h3&gt;

&lt;p&gt;In this app development environment is used, I have not created any production environment. I have attached the scrrenshot of used database colletions, if you want to run the source code.&lt;/p&gt;

&lt;p&gt;This version of app contains below features,&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;New User Registration (Appwrite Account API)&lt;/li&gt;
&lt;li&gt;User Login (Appwrite Account API)&lt;/li&gt;
&lt;li&gt;Marvel Universe Screen (Appwrite Database)&lt;/li&gt;
&lt;li&gt;Change Password (Appwrite Account API)&lt;/li&gt;
&lt;li&gt;Marvel Universe Moview Details&lt;/li&gt;
&lt;li&gt;Drawer Menu&lt;/li&gt;
&lt;li&gt;Logout&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I will continue work on this app and will deliver below features,&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Marvel Comics Screen (Appwrite Database &amp;amp; Marvel API)&lt;/li&gt;
&lt;li&gt;Marvel Stories Screen (Appwrite Database &amp;amp; Marvel API)&lt;/li&gt;
&lt;li&gt;Marvel Characters Screen (Appwrite Database &amp;amp; Marvel API)&lt;/li&gt;
&lt;li&gt;Profile Details (Appwrite Account API) &amp;amp; Pic Update (AppWrite Storage)&lt;/li&gt;
&lt;li&gt;External Loging (OAuth2 Providers will be used)&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Glims of the App.
&lt;/h4&gt;

&lt;blockquote&gt;
&lt;p&gt;Dashboard screen&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm0zhyslb1x4grd5x3c34.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm0zhyslb1x4grd5x3c34.png" alt="Dashboard"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Dashboard screen with playing video in YouTube player&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fna6vw2rng9z1f25899do.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fna6vw2rng9z1f25899do.png" alt="Dashboard with Playing Video"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;User login screen&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F961ed2j71ocspk4yy1b4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F961ed2j71ocspk4yy1b4.png" alt="User Login"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Awesome animated drawer menu&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fctq7tbmmmtxjgelqt2qk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fctq7tbmmmtxjgelqt2qk.png" alt="Drawer Menu"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Dashboard screen II&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff4at0ya9dxrnpzu7nrd2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff4at0ya9dxrnpzu7nrd2.png" alt="Dashboard 2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;User registration screen&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqjuz227ppder2l7z4q36.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqjuz227ppder2l7z4q36.png" alt="User Registration"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Change password screen&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9ml27c92fljveogjnjpp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9ml27c92fljveogjnjpp.png" alt="Change password"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Marvel cinemetic details screen&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvacm4fwxppotfskevl5x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvacm4fwxppotfskevl5x.png" alt="Marvel cinemetic details"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Database collection arrtibute screen (it is used in dashboard screen)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsswv986l50m9b2y8x9u7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsswv986l50m9b2y8x9u7.png" alt="Database collection arrtibute screen"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It is my first Hackathon, and I had a lots of fun with it.&lt;/p&gt;

&lt;p&gt;Appricite your time to reading this article.&lt;/p&gt;

&lt;p&gt;Thank You! Happy Coding :)&lt;/p&gt;

</description>
      <category>appwritehack</category>
      <category>flutter</category>
    </item>
    <item>
      <title>Good vs Bad - Highlight the active page in the nab-bar for MVC Razor View Engine</title>
      <dc:creator>Suchitkumar Khunt</dc:creator>
      <pubDate>Tue, 26 Apr 2022 12:15:43 +0000</pubDate>
      <link>https://forem.com/khuntsr/good-vs-bad-highlight-the-active-page-in-the-nab-bar-for-mvc-razor-view-engine-l90</link>
      <guid>https://forem.com/khuntsr/good-vs-bad-highlight-the-active-page-in-the-nab-bar-for-mvc-razor-view-engine-l90</guid>
      <description>&lt;h1&gt;
  
  
  Below is the expected output for this Article
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F71axx19yeezlbwr668wx.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F71axx19yeezlbwr668wx.gif" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Bad practice:
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Writing a piece of JavaScript code to each page to add/remove active class to corresponding link in nav-bar&lt;/li&gt;
&lt;li&gt;Writing a piece of JavaScript code in master layout page rather than each page for highlight active page in nav-bar&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Writing a piece of JavaScript code to each page to add/remove active class to corresponding link in nav-bar&lt;/strong&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Bad Practice: Writing a piece of JavaScript code to each page to add/remove an active class to the corresponding link in nav-bar
&lt;/h1&gt;

&lt;p&gt;Assume we have three pages; Home, About and Contact and wrote the below bad code to manage highlight active class in nav-bar. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Home Page:&lt;/em&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  $('#lnkHome').addClass('active');

  $('#lnkAbout').removeClass('active');

  $('#lnkContact').removeClass('active');
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;em&gt;About Page:&lt;/em&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  $('#lnkHome').removeClass('active');

  $('#lnkAbout').addClass('active');

  $('#lnkContact').removeClass('active');
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Contact Page:&lt;/em&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  $('#lnkHome').removeClass('active');

  $('#lnkAbout').removeClass('active');

  $('#lnkContact').addClass('active');
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h1&gt;
  
  
  Bad Practice: Writing a piece of JavaScript code on the master layout page rather than each page to highlight the active page in the nav-bar
&lt;/h1&gt;

&lt;p&gt;Assume we have three pages; Home, About and Contact and wrote the below bad code in the master layout page to manage highlight active class in nav-bar.&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;var currentActionName = ViewContext.RouteData.Values["action"].ToString();
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$(document).ready(function () {
    //remove the active class in each pages
    $('.lnk').each(function () {
        $(this).removeClass('active');
    });


    //assign the active class to active page only
    if ('@currentActionName' === 'Index') {
        $('#lnkHome').addClass('active');
    } else if ('@currentActionName' === "About") {
        $('#lnkHome').addClass('lnkAbout');
    } else if ('@currentActionName' === "Contact") {
        $('#lnkHome').addClass('lnkContact');
    }
});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h1&gt;
  
  
  Good Practice:
&lt;/h1&gt;

&lt;p&gt;Rather than writing the JavaScript code, we will create an Html helper in C# and manage the active class from that code.&lt;/p&gt;

&lt;p&gt;Refer below code, I have created an Html helper with the method IsSelected() to manage the active class in the nav-bar.&lt;/p&gt;

&lt;p&gt;`&lt;br&gt;
public static class HtmlHelperExtensions&lt;/p&gt;

&lt;p&gt;{&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    public static string IsSelected(this HtmlHelper html, string controller = null, string action = null,

        string cssClass = null)

    {

        if (string.IsNullOrEmpty(cssClass))

            cssClass = "active";



        var currentAction = (string)html.ViewContext.RouteData.Values["action"];

        var currentController = (string)html.ViewContext.RouteData.Values["controller"];



        if (string.IsNullOrEmpty(controller))

            controller = currentController;



        if (string.IsNullOrEmpty(action))

            action = currentAction;



        return controller == currentController &amp;amp;&amp;amp; action == currentAction ? cssClass : string.Empty;

    }



    public static string PageClass(this HtmlHelper html)

    {

        var currentAction = (string)html.ViewContext.RouteData.Values["action"];

        return currentAction;

    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;br&gt;
`&lt;/p&gt;

&lt;p&gt;After writing the above C# code, we will create this method in each menu link as bellowed. [@Html.IsSelected()]&lt;/p&gt;

&lt;blockquote&gt;
 @Html.ActionLink("Home", "Index", "Home")

 @Html.ActionLink("About", "About", "Home")

 @Html.ActionLink("Contact", "Contact", "Home")
&lt;/blockquote&gt;

&lt;p&gt;Below are the advantages of the above code. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ease to use&lt;/li&gt;
&lt;li&gt;Easily manage the highlight page functionality in large scale applications&lt;/li&gt;
&lt;li&gt;Show the single menu item highlighted for multiple pages&lt;/li&gt;
&lt;li&gt;Manage dynamic highlight class name for each menu item&lt;/li&gt;
&lt;li&gt;And most important, it is custom written code so we can customise it as per our need&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thank you for reading.&lt;/p&gt;

&lt;p&gt;Happy coding :)&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Good VS Bad – Beyond the JavaScript Console</title>
      <dc:creator>Suchitkumar Khunt</dc:creator>
      <pubDate>Wed, 21 Apr 2021 14:02:05 +0000</pubDate>
      <link>https://forem.com/khuntsr/good-vs-bad-beyond-the-javascript-console-59ak</link>
      <guid>https://forem.com/khuntsr/good-vs-bad-beyond-the-javascript-console-59ak</guid>
      <description>&lt;p&gt;In your development career, you mostly know about the console.log() but the console API can do many things that you may don’t know. HERE, in this article, we are going to learn all about console API with Good VS Bad practice.&lt;/p&gt;

&lt;p&gt;Let’s start with consoling the console object.&lt;/p&gt;

&lt;p&gt;Write console.log(console) in your browser’s console editor and you found the list of APIs provided by the console object. Each API purpose is unique and useful in certain cases. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fva0ynbvtikamvo21qvmt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fva0ynbvtikamvo21qvmt.png" alt="Alt Text" width="582" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Below are my explanations of the most useful APIs in console object.&lt;/p&gt;

&lt;h3&gt;
  
  
  Assume you have an Object on the list and you show that on the JavaScript console.
&lt;/h3&gt;

&lt;h4&gt;
  
  
  &lt;em&gt;The Bad Practice&lt;/em&gt;
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F22ucvec01lbcdd2a9edp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F22ucvec01lbcdd2a9edp.png" alt="Alt Text" width="800" height="76"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;em&gt;The Good Practice&lt;/em&gt;
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1uhhc8p35tif25g2fbl4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1uhhc8p35tif25g2fbl4.png" alt="Alt Text" width="800" height="274"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Assertion – Sometimes we want to log only when the condition is false.
&lt;/h3&gt;

&lt;p&gt;console.assert() – If condition false then only give an error. It eliminating the need for if condition and keep your code clean.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;em&gt;The Bad Practice&lt;/em&gt;
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd4yu3o6uaf764h8c2iaz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd4yu3o6uaf764h8c2iaz.png" alt="Alt Text" width="800" height="130"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;em&gt;The Good Practice&lt;/em&gt;
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn3wzryy2mmsq41myfurl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn3wzryy2mmsq41myfurl.png" alt="Alt Text" width="800" height="65"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  { } – Always use Braces to log the object with the name.
&lt;/h3&gt;

&lt;h4&gt;
  
  
  &lt;em&gt;The Bad Practice&lt;/em&gt;
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F442yfrf2cf1pm7v7ob9w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F442yfrf2cf1pm7v7ob9w.png" alt="Alt Text" width="800" height="70"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;em&gt;The Good Practice&lt;/em&gt;
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F36mdhwtvpsl424l8m3sa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F36mdhwtvpsl424l8m3sa.png" alt="Alt Text" width="800" height="71"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Group: If you have multiple logs, then try log group for collapsible sections.
&lt;/h3&gt;

&lt;h4&gt;
  
  
  &lt;em&gt;The Bad Practice&lt;/em&gt;
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7yydkurh4005ondd3pf7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7yydkurh4005ondd3pf7.png" alt="Alt Text" width="800" height="282"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;em&gt;The Good Practice&lt;/em&gt;
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F114friljz9t7kjqus2kj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F114friljz9t7kjqus2kj.png" alt="Alt Text" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Always, console object with its’ properties.
&lt;/h3&gt;

&lt;h4&gt;
  
  
  &lt;em&gt;The Bad Practice&lt;/em&gt;
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faqnl3u0mb8h9i7k07h9b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faqnl3u0mb8h9i7k07h9b.png" alt="Alt Text" width="800" height="125"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;em&gt;The Good Practice&lt;/em&gt;
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F878u8ljdikwft0zqd1vi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F878u8ljdikwft0zqd1vi.png" alt="Alt Text" width="800" height="287"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  How to set a timer with the console?
&lt;/h3&gt;

&lt;p&gt;We can start a timer with the console by calling time, then call timeLog to measure the elapsed time. It provides a simple solution for measuring performance.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Funxp5mx00eufstvg5xir.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Funxp5mx00eufstvg5xir.png" alt="Alt Text" width="800" height="224"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Now, lets talk about remaining APIs in console log.
&lt;/h3&gt;

&lt;h4&gt;
  
  
  &lt;em&gt;console.clear()&lt;/em&gt;
&lt;/h4&gt;

&lt;p&gt;The console.clear() method clears the console&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;em&gt;console.count()&lt;/em&gt;
&lt;/h4&gt;

&lt;p&gt;Writes to the console the number of times that particular console.count() is called.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frotopfk8v79kficv2kwn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frotopfk8v79kficv2kwn.png" alt="Alt Text" width="800" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;em&gt;console.info()&lt;/em&gt;
&lt;/h4&gt;

&lt;p&gt;This method writes a message to the console.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxio8j4aicbtetyb1njvf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxio8j4aicbtetyb1njvf.png" alt="Alt Text" width="800" height="65"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;em&gt;console.warn()&lt;/em&gt;
&lt;/h4&gt;

&lt;p&gt;The console.warn() method writes a warning to the console.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6huotxlhfsmdl9qo5ch2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6huotxlhfsmdl9qo5ch2.png" alt="Alt Text" width="800" height="61"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;em&gt;console.error()&lt;/em&gt;
&lt;/h4&gt;

&lt;p&gt;The console.error() method writes an error message to the console.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzxhzbrmiki44olsf96p2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzxhzbrmiki44olsf96p2.png" alt="Alt Text" width="800" height="61"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;em&gt;Console.trace()&lt;/em&gt;
&lt;/h4&gt;

&lt;p&gt;The console.trace() method displays a trace that shows how the code ended up at a certain point.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6l6zqwa1f8mqz632cyiz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6l6zqwa1f8mqz632cyiz.png" alt="Alt Text" width="800" height="305"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  How to apply CSS in console.log()?
&lt;/h3&gt;

&lt;p&gt;We can also apply the style in the console.log(). Use the special %c character to add some style.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2pvlnwselnnfh4nut6l6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2pvlnwselnnfh4nut6l6.png" alt="Alt Text" width="800" height="80"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thank you for reading this article.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>development</category>
      <category>devops</category>
    </item>
    <item>
      <title>28 Days Of Flutter Bootcamp 🕑 - Day 2 - Creating A New Flutter Project And Setup Physical Device And Emulator</title>
      <dc:creator>Suchitkumar Khunt</dc:creator>
      <pubDate>Wed, 21 Apr 2021 02:27:19 +0000</pubDate>
      <link>https://forem.com/khuntsr/28-days-of-flutter-bootcamp-day-2-creating-a-new-flutter-project-and-setup-physical-device-and-emulator-5cin</link>
      <guid>https://forem.com/khuntsr/28-days-of-flutter-bootcamp-day-2-creating-a-new-flutter-project-and-setup-physical-device-and-emulator-5cin</guid>
      <description>&lt;p&gt;Welcome to Flutter Bootcamp’s second session. On this day, you will learn how to set up a physical device and emulator, and how to create a new empty flutter project and folder structure of Flutter.&lt;/p&gt;

&lt;p&gt;Let’s start with creating a new Flutter project.&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 1
&lt;/h4&gt;

&lt;p&gt;Fire up Android Studio and select the option “Start a new Flutter project”&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqu83tc7k7ox5vw5n2lt1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqu83tc7k7ox5vw5n2lt1.png" alt="Alt Text" width="776" height="492"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 2
&lt;/h4&gt;

&lt;p&gt;As we are going to create an end-user application, select the “Flutter Application” and “Next” button.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwzxy8gj0ef5us5ux8ecf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwzxy8gj0ef5us5ux8ecf.png" alt="Alt Text" width="800" height="607"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Flutter Application:&lt;/strong&gt; When you want to develop an end-user Android or iOS mobile application. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flutter Plugins:&lt;/strong&gt; When exposing an Android or iOS API for developers, in sort if you want to make native functionality for Flutter.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flutter Package:&lt;/strong&gt; When you want to create a widget using pure dart programming.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flutter Module:&lt;/strong&gt; When creating a Flutter component to add to your application.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Step 3
&lt;/h4&gt;

&lt;p&gt;Configure the new Flutter Application&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Famg3jbphr90ppf324n5v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Famg3jbphr90ppf324n5v.png" alt="Alt Text" width="800" height="606"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Project Name:&lt;/strong&gt; Name of your project&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Flutter SDK path:&lt;/strong&gt; This is the folder path where we put the flutter SDK earlier&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Project Location:&lt;/strong&gt; This part tells you where your project gone be saved&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Description:&lt;/strong&gt; About text for your application &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Step 4
&lt;/h4&gt;

&lt;p&gt;Set the package information&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl0lu35v0kon4165m7t7b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl0lu35v0kon4165m7t7b.png" alt="Alt Text" width="800" height="602"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Package name:&lt;/strong&gt; It helps to create a package name by combining the company domain and name of your project for unique identification. Play store can identify a unique app with this package name. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can find some piece of starting code. This code is created by the Flutter team and all it does a simple counting application. Before starting development first, we need to connect the physical or virtual device for testing and debugging purpose. Android studio provides us with a feature for running an app on a physical device or virtual device (emulator).&lt;/p&gt;

&lt;h3&gt;
  
  
  How to create an emulator in Android studio?
&lt;/h3&gt;

&lt;p&gt;Before starting make sure that we have pre-installed all drivers. &lt;/p&gt;

&lt;h4&gt;
  
  
  Step 1
&lt;/h4&gt;

&lt;p&gt;Open SDK Manager (Tools &amp;gt; SDK Manager) and check that you have installed the below required things.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SDK Platforms &amp;gt; One of the SDK Platforms.&lt;/li&gt;
&lt;li&gt;SDK Tools &amp;gt; Android SDK Build-Tools&lt;/li&gt;
&lt;li&gt;SDK Tools &amp;gt; Google USB Driver&lt;/li&gt;
&lt;li&gt;SDK Tools &amp;gt; Android SDK Tools&lt;/li&gt;
&lt;li&gt;SDK Tools &amp;gt; Android Emulator&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxns6q9jlpz3g9n1sel60.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxns6q9jlpz3g9n1sel60.png" alt="Alt Text" width="800" height="555"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0glv4v9fqz4ck7fr7bmg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0glv4v9fqz4ck7fr7bmg.png" alt="Alt Text" width="800" height="613"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 2
&lt;/h4&gt;

&lt;p&gt;Open AVD Manager (Tools &amp;gt; AVD Manager)&lt;br&gt;
Click on “+ Create Virtual Device…”&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx4xy7ayl7ewiodg8ua1y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx4xy7ayl7ewiodg8ua1y.png" alt="Alt Text" width="800" height="559"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Select your preferred device and then click on “Next”&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fltp8jy2l6e5ccyx93scb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fltp8jy2l6e5ccyx93scb.png" alt="Alt Text" width="800" height="540"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Select your preferred system image and click on “Next” and then click on “Finish”. I suggest to chose x86 Images for fast performance on testing and debugging.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F60zarelss203ay8pv4tm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F60zarelss203ay8pv4tm.png" alt="Alt Text" width="800" height="545"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, click on the lunch icon to start your created emulator.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsnn07sdq0yb5y6bcl6xi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsnn07sdq0yb5y6bcl6xi.png" alt="Alt Text" width="800" height="558"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frxeumor862nxfjh4n5jz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frxeumor862nxfjh4n5jz.png" alt="Alt Text" width="800" height="435"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  How to connect a physical device with your Android studio?
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Step 1
&lt;/h4&gt;

&lt;p&gt;You need to enable USB debugging on your device&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to the “Settings &amp;gt; About Phone” on your android device.&lt;/li&gt;
&lt;li&gt;Tap 10 times on “Build Number”, and then you will find the message “You are now a developer!” &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjmpet5mg6gtb6doo1r4f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjmpet5mg6gtb6doo1r4f.png" alt="Alt Text" width="384" height="768"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdnjxzwpopo8bmvcb6zit.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdnjxzwpopo8bmvcb6zit.png" alt="Alt Text" width="384" height="768"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 2
&lt;/h4&gt;

&lt;p&gt;Now, you have successfully enabled developer mode. Go to the developer option “Settings &amp;gt; System &amp;gt; Developer Options”&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvn68xl4g8v1oyo3y0fen.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvn68xl4g8v1oyo3y0fen.png" alt="Alt Text" width="384" height="768"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 3
&lt;/h4&gt;

&lt;p&gt;Enable “USB debugging” under the DEBUGGING in the developer options screen.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8d0h75cfrdem9t7wdhw2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8d0h75cfrdem9t7wdhw2.png" alt="Alt Text" width="384" height="768"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 4
&lt;/h4&gt;

&lt;p&gt;Now plug your Android device with the system. If the device successfully connected, you can find the notification “USB debugging connected” on your device. After that click on the “run” icon but make sure that your device is selected on Flutter device selection. You can also run the command “flutter run” on Terminal.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4t2p00aq1uf65v978i7k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4t2p00aq1uf65v978i7k.png" alt="Alt Text" width="384" height="768"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbzninjpbxcz4csj5l8k1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbzninjpbxcz4csj5l8k1.png" alt="Alt Text" width="800" height="433"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcz12tpspnhibyd07ktaz.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcz12tpspnhibyd07ktaz.jpg" alt="Alt Text" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Now, Let’s talk about folder structure.
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flnkj33yxfuzi2xmbyk8k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flnkj33yxfuzi2xmbyk8k.png" alt="Alt Text" width="361" height="425"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  .dart tool
&lt;/h4&gt;

&lt;p&gt;Starting with the very top folder and it is .dart_tool. This directory is new in Dart 2 and it is used by a pub and other tools. In earlier dart, there is a directory name as .pub but after Dart 2 it is replaced with .dart_tool.&lt;/p&gt;

&lt;h4&gt;
  
  
  .idea
&lt;/h4&gt;

&lt;p&gt;This directory stays for Android studio configuration. These configurations include VCS mapping, run configuration, debug configuration, navigation history, save details about current open files and many more.&lt;/p&gt;

&lt;h4&gt;
  
  
  android
&lt;/h4&gt;

&lt;p&gt;This folder contains the fully native Android project code and Flutter used this folder for building the android application. When we run the application on the device/emulator, this folder is used to build an android application and then it is deployed on the device/emulator.&lt;/p&gt;

&lt;h4&gt;
  
  
  build
&lt;/h4&gt;

&lt;p&gt;A build directory stays for the compiled code of your application. When you run/debug the application, Flutter SDK automatic generate the build file and save that file in this directory.&lt;/p&gt;

&lt;h4&gt;
  
  
  iOS
&lt;/h4&gt;

&lt;p&gt;This folder contains the complete code of XCode for the native iOS app and Flutter used this folder for building the iOS application. When we are run the application on the device/simulator, this folder is used to build an iOS application and then it is deployed on the device/simulator.&lt;/p&gt;

&lt;h4&gt;
  
  
  lib
&lt;/h4&gt;

&lt;p&gt;Yes! It is an important directory for us. This folder contains the dart files that contain the flutter code. By the way, we are spent almost 90% time with this directory.&lt;/p&gt;

&lt;h4&gt;
  
  
  test
&lt;/h4&gt;

&lt;p&gt;This folder stands for automatic testing. A developer can write all code for automatic testing in this folder.&lt;/p&gt;

&lt;h4&gt;
  
  
  .gitignore file
&lt;/h4&gt;

&lt;p&gt;This file is used when you are working with Git. This is a text file and it contains a list of folders, files and extensions which should be ignored in push the code on Gist.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Note
Git is a free and open-source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  .metadata file
&lt;/h4&gt;

&lt;p&gt;The second name in our list is .metadata. It is used for automatically tracking the properties by Flutter SDK. This is an auto managed file and we are not going to change anything in this file.&lt;/p&gt;

&lt;h4&gt;
  
  
  .packages file
&lt;/h4&gt;

&lt;p&gt;This text file contains the list of dependencies by Flutter SDK. This is an auto managed file and we are not going to change anything in this file.&lt;/p&gt;

&lt;h4&gt;
  
  
  pubspec.lock
&lt;/h4&gt;

&lt;p&gt;This file contains the list of package and SDK information. This is an auto managed file and we are not going to change anything in this file.&lt;/p&gt;

&lt;h4&gt;
  
  
  pubspec.yaml
&lt;/h4&gt;

&lt;p&gt;Yes! It is an important file for us. This file stands for the root level settings for our Flutter application. We can say that it's a projects configuration file. This file contains configurations like project version, project name, project description, project dependencies, assets management (images, fonts) and project environment.&lt;/p&gt;

&lt;h3&gt;
  
  
  NEXT
&lt;/h3&gt;

&lt;p&gt;Working with the material app, assets and add App Icons to the android and iOS project.&lt;/p&gt;

&lt;p&gt;Don't miss my next article. Follow me on my DEV.TO profile. Click &lt;a href="https://dev.to/khuntsr"&gt;HERE&lt;/a&gt; to visit my profile.&lt;/p&gt;

&lt;p&gt;Thank You for browsing. :)&lt;/p&gt;

</description>
      <category>flutter</category>
      <category>android</category>
      <category>ios</category>
      <category>development</category>
    </item>
    <item>
      <title>28 Days of Flutter Bootcamp 🕐– Day 1: Introduction and development setup</title>
      <dc:creator>Suchitkumar Khunt</dc:creator>
      <pubDate>Mon, 20 Jul 2020 11:53:03 +0000</pubDate>
      <link>https://forem.com/khuntsr/28-days-of-flutter-bootcamp-day-1-introduction-and-development-setup-35j3</link>
      <guid>https://forem.com/khuntsr/28-days-of-flutter-bootcamp-day-1-introduction-and-development-setup-35j3</guid>
      <description>&lt;p&gt;Welcome to the Flutter Bootcamp. This is the fully flutter course for a complete guide to the Flutter SDK and flutter framework with DARK for building a beautiful native Android and iOS application. I am covering all fundamental concepts for flutter development; this becomes the most comprehensive free flutter course.&lt;/p&gt;

&lt;h4&gt;
  
  
  What you will learn?
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;The fundamentals of building apps with Flutter and Dart&lt;/li&gt;
&lt;li&gt;Build beautiful, engaging native and fast apps for Android and iOS with one codebase&lt;/li&gt;
&lt;li&gt;Learn the advanced UI with premade flutter widgets and third-party SDK&lt;/li&gt;
&lt;li&gt;Dart programming with the concept of OOPS fundamentals&lt;/li&gt;
&lt;li&gt;All widgets explanation with rich text articles and speed code video&lt;/li&gt;
&lt;li&gt;Create a fully functional app with firebase authentication, firestore and fire storage [with speed code video]&lt;/li&gt;
&lt;li&gt;Advanced features like push notification, google map, device camera, touch authentication and many more&lt;/li&gt;
&lt;li&gt;Deep dive in Crashlytics, Admob, Performance, A/B testing and Remote config&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  What you will need?
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;A computer system with admin privileges&lt;/li&gt;
&lt;li&gt;We will use Android studio as a development tool [it is free to use]&lt;/li&gt;
&lt;li&gt;Git, Flutter SDK and Dart SDK&lt;/li&gt;
&lt;li&gt;Have at least 20GB of free space on your hard drive&lt;/li&gt;
&lt;li&gt;This course starts with a very basic level, so no prior programming language experience required&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  What is Flutter?
&lt;/h4&gt;

&lt;p&gt;Flutter is Google’s UI toolkit for building beautiful, natively compiled applications for &lt;a href="https://flutter.dev/docs"&gt;mobile&lt;/a&gt;, &lt;a href="https://flutter.dev/web"&gt;web&lt;/a&gt;, and &lt;a href="https://flutter.dev/desktop"&gt;desktop&lt;/a&gt;from a single codebase. In this course, you will learn about mobile development.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why I choose Flutter for mobile development?
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Fast Development
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fwusgwm43riji8zsqkpj3.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fwusgwm43riji8zsqkpj3.gif" alt="Resource Credits: https://flutter.dev" width="800" height="607"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Paint your app to life in milliseconds with Stateful Hot Reload. Use a rich set of fully customizable widgets to build native interfaces in minutes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Flutter’s hot reload helps you quickly and easily experiment, build UIs, add features, and fix bugs faster. Experience sub-second reload times without losing state on emulators, simulators, and hardware.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Expressive and Flexible UI
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fxtuv53lhruj1ft2bysur.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fxtuv53lhruj1ft2bysur.gif" alt="Resource Credits: https://flutter.dev" width="600" height="456"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Quickly ship features with a focus on native end-user experiences. The layered architecture allows for full customization, which results in incredibly fast rendering and expressive and flexible designs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Delight your users with Flutter’s built-in beautiful Material Design and Cupertino (iOS-flavour) widgets, rich motion APIs, smooth natural scrolling, and platform awareness.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Native Performance
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F10qodayp2oi5spsurhd8.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F10qodayp2oi5spsurhd8.gif" alt="Resource Credits: https://flutter.dev" width="800" height="607"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Flutter’s widgets incorporate all critical platform differences such as scrolling, navigation, icons and fonts, and your Flutter code is compiled to native ARM machine code using Dart’s native compilers.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step by Step walk-throughs
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Flutter Development setup for Windows
&lt;/h3&gt;

&lt;h4&gt;
  
  
  A. Install Git:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Download Git from &lt;a href="https://www.google.com"&gt;https://git-scm.com/downloads&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fdfcd9019mp18bhroasdw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fdfcd9019mp18bhroasdw.png" alt="Suchit Khunt" width="800" height="393"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Install the downloaded Git setup&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ftx3w5ag47msxa4sklvxn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ftx3w5ag47msxa4sklvxn.png" alt="Suchit Khunt" width="515" height="406"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ffzyygjunfstj137bqwgs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ffzyygjunfstj137bqwgs.png" alt="Suchit Khunt" width="509" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fj1qvh0r7w6r76b1ifr7g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fj1qvh0r7w6r76b1ifr7g.png" alt="Suchit Khunt" width="509" height="399"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  B. Ready to start with Flutter SDK:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Download the latest stable release Flutter SDK from &lt;a href="https://flutter.dev/docs/get-started/install/windows"&gt;https://flutter.dev/docs/get-started/install/windows&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Extract the zip file and place the contained flutter in the desired installation location for the Flutter SDK (for example, C:\src\flutter; do not install Flutter in a directory like C:\Program Files\ that requires elevated privileges)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fhnzax8msnqczwgeicdkl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fhnzax8msnqczwgeicdkl.png" alt="Suchit Khunt" width="800" height="379"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Update your path (If you wish to run Flutter commands in the regular Windows console, take these steps to add Flutter to the PATH environment variable)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;1) From the Start search bar, enter &lt;strong&gt;‘env’&lt;/strong&gt; and select &lt;strong&gt;Edit the system environment variables&lt;/strong&gt; for your account.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F5miuzf5ctvnfy7nc2ct1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F5miuzf5ctvnfy7nc2ct1.png" alt="Suchit Khunt" width="800" height="646"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2) In the Advanced tab click on &lt;strong&gt;“Environment Variables…”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fjyjb4krfh3rcdl8s5cyp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fjyjb4krfh3rcdl8s5cyp.png" alt="Suchit Khunt" width="430" height="484"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3) Under &lt;strong&gt;User variables check&lt;/strong&gt; if there is an entry called &lt;strong&gt;Path&lt;/strong&gt;: (select the Path entry and click on Edit)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3mkutjiaugimh3y9o5xo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3mkutjiaugimh3y9o5xo.png" alt="Suchit Khunt" width="628" height="597"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4) If &lt;strong&gt;“C:\src\flutter\bin”&lt;/strong&gt; does not exist, then click on &lt;strong&gt;New&lt;/strong&gt;and add &lt;strong&gt;“C:\src\flutter\bin”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fmz1pul0gfy4dkaodczg4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fmz1pul0gfy4dkaodczg4.png" alt="Suchit Khunt" width="770" height="702"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;5) To check the path variable setup open the command prompt and run &lt;strong&gt;“flutter — version”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fem8s74g4k0zeh4t0x7th.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fem8s74g4k0zeh4t0x7th.png" alt="Suchit Khunt" width="748" height="562"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  C. Get started with Dark SDK:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Download the latest stable release version of Dark from &lt;a href="https://dart.dev/tools/sdk/archive"&gt;https://dart.dev/tools/sdk/archive&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F6svzzno1oc0s1zeksqeg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F6svzzno1oc0s1zeksqeg.png" alt="Suchit Khunt" width="800" height="1056"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Extract the zip file and place the contained dart-sdk in the desired installation location for the Flutter SDK (for example, C:\Program Files\Dart\dart-SDK)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Update your path&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;1) From the Start search bar, enter &lt;strong&gt;‘env’&lt;/strong&gt; and select &lt;strong&gt;Edit environment variables&lt;/strong&gt; for your account.&lt;/p&gt;

&lt;p&gt;2) In the Advanced tab click on &lt;strong&gt;“Environment Variables…”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;3) Under System variables check if there is not an entry called &lt;strong&gt;DARK_SDK&lt;/strong&gt;; click on &lt;strong&gt;New…&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fhdd4yro04fj236hukgr3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fhdd4yro04fj236hukgr3.png" alt="Suchit Khunt" width="630" height="593"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4) Enter &lt;strong&gt;“DART_SDK”&lt;/strong&gt; in Variable name and &lt;strong&gt;“C:\Program Files\Dart\dart-sdk”&lt;/strong&gt; in Variable value then click on OK&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F0qbthjphadhb2ysom162.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F0qbthjphadhb2ysom162.png" alt="Suchit Khunt" width="663" height="179"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;5) To check the path variable setup open the command prompt and run &lt;strong&gt;“flutter — version”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F1r2jf2975k0gtrflfqe4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F1r2jf2975k0gtrflfqe4.png" alt="Suchit Khunt" width="762" height="226"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  D. Install the Android Studio tools:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Download the latest version of Android Studio from &lt;a href="https://developer.android.com/studio"&gt;https://developer.android.com/studio&lt;/a&gt; and install it. We will set up the Android Emulator later. [At the development time]&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F81bhnezcvd84904nq5jq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F81bhnezcvd84904nq5jq.png" alt="Suchit Khunt" width="800" height="426"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  E. Finish the installation by running the command &lt;strong&gt;flutter doctor&lt;/strong&gt;:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;From a console window run the command “flutter doctor” to see if there are any platform dependencies you need to complete the setup:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2i5p73nal9kk3gitmfoa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2i5p73nal9kk3gitmfoa.png" alt="Suchit Khunt" width="750" height="561"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Note: You may warning message “! Doctor found issues in 1 category” for “connected device”. Ignore it at this point as we have not set up any physical device or emulator.&lt;/p&gt;

&lt;p&gt;Note: To set up the Flutter development on MAC, follow the step describe in &lt;a href="https://flutter.dev/docs/get-started/install/macos"&gt;https://flutter.dev/docs/get-started/install/macos&lt;/a&gt;. As I don’t have MAC so unable to describe the steps in details but you can follow the step as per the above link to complete the setup on MAC.&lt;/p&gt;




&lt;h1&gt;
  
  
  &lt;a href="https://dev.to/khuntsr/28-days-of-flutter-bootcamp-day-2-creating-a-new-flutter-project-and-setup-physical-device-and-emulator-5cin"&gt;NEXT: Creating a new flutter project and setup physical device and emulator.&lt;/a&gt;
&lt;/h1&gt;

</description>
      <category>android</category>
      <category>flutter</category>
      <category>development</category>
      <category>ios</category>
    </item>
    <item>
      <title>Answer: ELMAH - Email not received in production environment</title>
      <dc:creator>Suchitkumar Khunt</dc:creator>
      <pubDate>Fri, 03 Jan 2020 11:07:33 +0000</pubDate>
      <link>https://forem.com/khuntsr/answer-elmah-email-not-received-in-production-environment-3547</link>
      <guid>https://forem.com/khuntsr/answer-elmah-email-not-received-in-production-environment-3547</guid>
      <description>&lt;div class="ltag__stackexchange--container"&gt;
  &lt;div class="ltag__stackexchange--title-container"&gt;
    
      &lt;div class="ltag__stackexchange--title"&gt;
        &lt;div class="ltag__stackexchange--header"&gt;
          &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--AoTUKOcU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/stackoverflow-logo-b42691ae545e4810b105ee957979a853a696085e67e43ee14c5699cf3e890fb4.svg" alt=""&gt;
          &lt;a href="https://stackoverflow.com/questions/57971821/elmah-email-not-received-in-production-environment/57973383#57973383" rel="noopener noreferrer"&gt;
            &lt;span class="title-flare"&gt;answer&lt;/span&gt; re: ELMAH - Email not received in production environment
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="ltag__stackexchange--post-metadata"&gt;
          &lt;span&gt;Sep 17 '19&lt;/span&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;a class="ltag__stackexchange--score-container" href="https://stackoverflow.com/questions/57971821/elmah-email-not-received-in-production-environment/57973383#57973383" rel="noopener noreferrer"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oeieW07A--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/stackexchange-arrow-up-eff2e2849e67d156181d258e38802c0b57fa011f74164a7f97675ca3b6ab756b.svg" alt=""&gt;
        &lt;div class="ltag__stackexchange--score-number"&gt;
          7
        &lt;/div&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--h2-sXgSn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/stackexchange-arrow-down-4349fac0dd932d284fab7e4dd9846f19a3710558efde0d2dfd05897f3eeb9aba.svg" alt=""&gt;
      &lt;/a&gt;
    
  &lt;/div&gt;
  &lt;div class="ltag__stackexchange--body"&gt;
    
&lt;p&gt;After going through your question, I've found that you just forgot to add an email setting. Add the below lines in your web.config. Make sure to change the hostname, port, username, and password.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;system.net&amp;gt;
    &amp;lt;mailSettings&amp;gt;
      &amp;lt;smtp deliveryMethod="Network"&amp;gt;
        &amp;lt;network host="host address" port="12345" userName="username here" password="password here"/&amp;gt;
      &amp;lt;/smtp&amp;gt;
    &amp;lt;/mailSettings&amp;gt;
&amp;lt;/system.net&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

    
  &lt;/div&gt;
  &lt;div class="ltag__stackexchange--btn--container"&gt;
    &lt;a href="https://stackoverflow.com/questions/57971821/elmah-email-not-received-in-production-environment/57973383#57973383" class="ltag__stackexchange--btn" rel="noopener noreferrer"&gt;Open Full Answer&lt;/a&gt;
  &lt;/div&gt;
&lt;/div&gt;


</description>
    </item>
  </channel>
</rss>
