<?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>DEV Community: Shivam Goyal</title>
    <description>The latest articles on DEV Community by Shivam Goyal (@shivamgoyal).</description>
    <link>https://dev.to/shivamgoyal</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%2F192928%2Fbeb4c903-583c-4568-b859-5aa1d50b58f0.jpg</url>
      <title>DEV Community: Shivam Goyal</title>
      <link>https://dev.to/shivamgoyal</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/shivamgoyal"/>
    <language>en</language>
    <item>
      <title>What's new with Flutter 1.7 &amp; how to upgrade to the latest version</title>
      <dc:creator>Shivam Goyal</dc:creator>
      <pubDate>Wed, 25 Mar 2020 22:51:18 +0000</pubDate>
      <link>https://dev.to/enappd/what-s-new-with-flutter-1-7-how-to-upgrade-to-the-latest-version-17bh</link>
      <guid>https://dev.to/enappd/what-s-new-with-flutter-1-7-how-to-upgrade-to-the-latest-version-17bh</guid>
      <description>
&lt;p&gt;Flutter has got a new &amp;amp; improved version of itself in it’s July release. The release is available now in the stable channel for users to upgrade. Flutter 1.7 contains support for AndroidX and for updated Play Store requirements, a number of new and enhanced components, and bug fixes to customer-reported issues.&lt;/p&gt;
&lt;h3&gt;Upgrading to Flutter 1.7&lt;/h3&gt;
&lt;p&gt;If you already have Flutter on your system and you’re on the default stable channel, you can upgrade to version 1.7 by running &lt;code&gt;&lt;strong&gt;flutter upgrade&lt;/strong&gt;&lt;/code&gt; from the command line.&lt;/p&gt;
&lt;p&gt;If you want to freshly install Flutter on your system then you can find it &lt;a href="https://medium.com/enappd/install-flutter-on-windows-and-mac-1fd1dde453ba" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;New Features &amp;amp; Upgrades&lt;/h3&gt;
&lt;h4&gt;New widgets and framework enhancements&lt;/h4&gt;
&lt;ul&gt;&lt;li&gt;
&lt;strong&gt;Range Slider&lt;br&gt;&lt;/strong&gt;This release features a new &lt;code&gt;&lt;strong&gt;RangeSlider&lt;/strong&gt;&lt;/code&gt; control that lets you select a range of values on a single slider (for example a minimum and maximum temperature value):&lt;/li&gt;&lt;/ul&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kyIZxeyz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://cdn-images-1.medium.com/max/720/1%2A3-xTJ2gYMa_a5WzZwW4DqA.gif" width="600" height="659"&gt;&lt;br&gt;The new, themeable RangeSlider widget supports continuous or discrete styles&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Snackbar&lt;br&gt;&lt;/strong&gt; The updated &lt;code&gt;&lt;strong&gt;SnackBar&lt;/strong&gt;&lt;/code&gt;&lt;strong&gt; &lt;/strong&gt;widget supports an updated look in the Material spec, and a number of new samples are added to the documentation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cupertino&lt;br&gt;&lt;/strong&gt;The fidelity of the &lt;code&gt;&lt;strong&gt;CupertinoPicker&lt;/strong&gt;&lt;/code&gt;&lt;strong&gt; &lt;/strong&gt;and &lt;code&gt;&lt;strong&gt;CupertinoDateTimePicker&lt;/strong&gt;&lt;/code&gt;&lt;strong&gt; &lt;/strong&gt;widgets are updated and added support for localization to non-English languages.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Text Selection &amp;amp; Editing&lt;br&gt;&lt;/strong&gt;Flutter devs have made major improvements to the text selection and editing experience on iOS, regardless of whether you’re using the Material or Cupertino design language.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Text Rendring&lt;br&gt;&lt;/strong&gt;Text rendering gets a big upgrade with support for rich typography features, including tabular and old-style numbers, slashed zeros, and stylistic sets, as this demo shows:&lt;/li&gt;
&lt;/ul&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1Ws1fPRO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/720/1%2ACECd-z9tyN5S2NmGaHGgoQ.png" width="720" height="1386"&gt;&lt;br&gt;With Flutter, you can now add sophisticated typography with OpenType font feature support&lt;ul&gt;&lt;li&gt;
&lt;strong&gt;Game Controllers&lt;br&gt;&lt;/strong&gt;Flutter now has built-in support for gaming controllers and you can build those feature natively.&lt;/li&gt;&lt;/ul&gt;
&lt;h4&gt;AndroidX Support for New Apps&lt;/h4&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--IEzFBEIF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/720/1%2AtNteefww-CcWg6l04K-8Pw.jpeg" width="533" height="300"&gt;&lt;p&gt;&lt;a href="https://developer.android.com/jetpack/androidx" rel="noopener noreferrer"&gt;AndroidX&lt;/a&gt; is a new open-source support library from the Jetpack team that helps Android apps stay updated with the latest components without sacrificing backward compatibility. Now that AndroidX is itself stable and many Flutter packages have been updated to support it, Flutter supports creating new Flutter projects with AndroidX, which reduces the work needed to integrate with other parts of the Android ecosystem.&lt;/p&gt;
&lt;p&gt;When creating a Flutter project, you can add the &lt;code&gt;&lt;strong&gt;--androidx&lt;/strong&gt;&lt;/code&gt; flag to ensure the generated project targets the new support library. Information about migrating existing projects to AndroidX can be found on &lt;a href="https://flutter.dev" rel="noopener noreferrer"&gt;flutter.dev&lt;/a&gt;. We’re actively working on bringing AndroidX / Jetifier support for apps with mixed AndroidX / Android Support libraries, such as in add-to-app cases, and will have more to share on this front in a forthcoming post.&lt;/p&gt;
&lt;h4&gt;Support for Android app bundles and 64-bit Android apps&lt;/h4&gt;
&lt;p&gt;From August 1st, 2019, Android apps that use native code and target Android 9 Pie will be required to provide a &lt;strong&gt;64-bit version&lt;/strong&gt; in addition to the 32-bit version when publishing to the &lt;strong&gt;Google Play Store&lt;/strong&gt;. While Flutter has long supported generating 64-bit Android apps, version 1.7 adds support for creating Android App Bundles that target both 64-bit and 32-bit from a single submission. The particular steps for how to create separate APK files for both 32-bit and 64-bit devices are provided in a separate blog post.&lt;/p&gt;
&lt;h4&gt;Building apps on Xcode becomes easy&lt;/h4&gt;
&lt;p&gt;Flutter has particular added support for the new Xcode build system in Flutter 1.7 release, so as to make the development of Flutter apps easy &amp;amp; comfortable on Mac. The support can be easily enabled for existing projects in minimum clicks.&lt;/p&gt;
&lt;h3&gt;Over 1250 issues closed on Github&lt;/h3&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--K0tRigIn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://cdn-images-1.medium.com/max/720/1%2Azi0eDtL7N1vNq4tpSXtgPg.gif" width="400" height="226"&gt;&lt;p&gt;Flutter responded to customer-reported issues, with over 1,250 issues closed in the two months since their last stable release in May.&lt;/p&gt;
&lt;p&gt;With the rapid growth in Flutter is working to increase staffing in this area, which will help with faster triaging of new bugs, closing and merging duplicate issues and redirecting support requests to StackOverflow.&lt;/p&gt;
&lt;p&gt;Flutter team has also fixed the top crashing bug, which was an error when the Flutter tool is unable to write to the Flutter directory. Flutter now fails gracefully if the user doesn’t have write permissions, with clearer indications on how to fix the problem.&lt;/p&gt;
&lt;h3&gt;Updated Documentation &amp;amp; Samples&lt;/h3&gt;
&lt;p&gt;In terms of documentation, Flutter has an ever-increasing list of samples that can be created directly from the flutter create tool. From the command line, you can run a command such as:&lt;/p&gt;
&lt;pre&gt;&lt;strong&gt;$ flutter create --sample=material.AppBar.1 mysample&lt;/strong&gt;&lt;/pre&gt;
&lt;p&gt;If a sample can be created in this way, you’ll see a “Sample in the App” tab in the documentation of that particular widget.&lt;/p&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--JHPsm0_z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/1080/1%2AdETEBh8c3YPs3GmvPootVQ.png" width="800" height="253"&gt;&lt;p&gt;Behind the scenes, you’ll see lots of underlying work to create infrastructure towards enabling Flutter on macOS and Windows, with further support for important concepts like right-clicking and unique platform infrastructure such as MSBuild. Support for non-mobile platforms is not yet available in the stable channel, however.&lt;/p&gt;

&lt;h3&gt;🎯 That’s all for today.&lt;/h3&gt;
&lt;blockquote&gt;If you got any queries hit me up in the comments or ping me over on &lt;a href="mailto:hi@itsshivam.com"&gt;&lt;/a&gt;&lt;a href="mailto:hi@itsshivam.com"&gt;hi@itsshivam.com&lt;/a&gt; 📧&lt;/blockquote&gt;
&lt;blockquote&gt;If you learned even a thing or two, clap your hands👏 as many times as you can to show your support! It really motivates me to contribute towards the community.&lt;/blockquote&gt;
&lt;blockquote&gt;Feeling too generous? &lt;a href="https://www.paypal.me/shivamgoyal1899/" rel="noopener noreferrer"&gt;Buy me a Drink&lt;/a&gt; 🍺&lt;/blockquote&gt;
&lt;blockquote&gt;Wanna collaborate? &lt;a href="mailto:hi@itsshivam.com"&gt;Let’s talk some tech&lt;/a&gt; 😊&lt;/blockquote&gt;
&lt;blockquote&gt;Stalk me over on &lt;a href="https://itsshivam.com/" rel="noopener noreferrer"&gt;itsshivam.com&lt;/a&gt;, &lt;a href="https://github.com/ShivamGoyal1899" rel="noopener nofollow noreferrer"&gt;GitHub&lt;/a&gt;, or &lt;a href="https://linkedin.com/in/shivamgoyal1899/" rel="noopener nofollow noreferrer"&gt;LinkedIn&lt;/a&gt;. 👀&lt;/blockquote&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--AFWYAUiG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/720/1%2Ar5VeD2fV04iDy8xfmaauHA.png" width="720" height="17"&gt;&lt;p&gt;This article was originally published at &lt;a href="https://enappd.com" rel="noopener noreferrer"&gt;Enappd&lt;/a&gt;.&lt;/p&gt;


</description>
      <category>flutter</category>
      <category>android</category>
      <category>ios</category>
      <category>androidx</category>
    </item>
    <item>
      <title>Connecting Cloud Firestore Database to Flutter</title>
      <dc:creator>Shivam Goyal</dc:creator>
      <pubDate>Wed, 25 Mar 2020 21:53:56 +0000</pubDate>
      <link>https://dev.to/enappd/connecting-cloud-firestore-database-to-flutter-cfp</link>
      <guid>https://dev.to/enappd/connecting-cloud-firestore-database-to-flutter-cfp</guid>
      <description>
&lt;p&gt;Cloud Firestore is a flexible, scalable database for mobile, web, and server development from Firebase and Google Cloud Platform. Like Firebase Realtime Database, it keeps your data in-sync across client apps through realtime listeners and offers offline support for mobile and web so you can build responsive apps that work regardless of network latency or Internet connectivity. Cloud Firestore also offers seamless integration with other Firebase and Google Cloud Platform products, including Cloud Functions.&lt;/p&gt;
&lt;h4&gt;What you’ll build?&lt;/h4&gt;
&lt;p&gt;In this tutorial, you’ll build a mobile app featuring realtime Cloud Firestore Database using the Flutter SDK. Your app will:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Display a voting interface connected to a Firestore database.&lt;/li&gt;
&lt;li&gt;Update the database on the cloud as you tap on a particular vote.&lt;/li&gt;
&lt;/ul&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kF5JBtjr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/720/0%2APqwflenUVNH0wIBC.png" width="512" height="393"&gt;&lt;br&gt;That’s how the final implementation gonna look like&lt;p&gt;This tutorial focuses on adding Cloud Firestore to a Flutter app. Non-relevant concepts and code blocks are glossed over and are provided for you to simply copy and paste.&lt;/p&gt;
&lt;h4&gt;Package Used | &lt;a href="https://pub.dev/packages/cloud_firestore" rel="noopener noreferrer"&gt;cloud_firestore&lt;/a&gt;
&lt;/h4&gt;


&lt;h3&gt;Setting up Flutter on your machine&lt;/h3&gt;
&lt;p&gt;The detailed steps to install Flutter on your personal computer &amp;amp; getting started with Flutter is available at the following blog post &lt;a href="https://medium.com/enappd/install-flutter-on-windows-and-mac-1fd1dde453ba" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Adding Firebase to your Flutter App&lt;/h3&gt;
&lt;p&gt;This tutorial requires already setup Firebase. The detailed steps to integrate Firebase with Flutter is available at the following blog post &lt;a href="https://medium.com/enappd/adding-firebase-to-your-flutter-app-281b8f391b47" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Your Firebase-Flutter setup is finished, and you’re ready to start building your app!&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;Create your Cloud Firestore database&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;You’ll start by setting up Cloud Firestore and initializing it with some values.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Open the &lt;a href="https://console.firebase.google.com/" rel="noopener noreferrer"&gt;Firebase console&lt;/a&gt;, then select the Firebase project that you created during setup.&lt;/li&gt;
&lt;li&gt;From the left nav &lt;strong&gt;Develop&lt;/strong&gt; section, select &lt;strong&gt;Database&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Fu4vgmmI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/720/1%2A0um9HaWpBX_X_SiuXhA8jg.png" width="308" height="340"&gt;&lt;ul&gt;&lt;li&gt;In the &lt;strong&gt;Cloud Firestore&lt;/strong&gt; pane, click &lt;strong&gt;Create database&lt;/strong&gt;.&lt;/li&gt;&lt;/ul&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LfJRAkSB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/720/1%2As_0SYZq2gL_BUbJLem_mSA.png" width="522" height="294"&gt;&lt;ul&gt;
&lt;li&gt;In the &lt;strong&gt;Secure rules for Cloud Firestore dialog&lt;/strong&gt;, select &lt;strong&gt;Start in test mode&lt;/strong&gt;, then click &lt;strong&gt;Next&lt;/strong&gt;. On the next screen, select &lt;strong&gt;Cloud Firestore location&lt;/strong&gt;. I suggest selecting &lt;code&gt;&lt;strong&gt;nam5 (us-central)&lt;/strong&gt;&lt;/code&gt;&lt;strong&gt; &lt;/strong&gt;. However, you can select according to your preference.&lt;/li&gt;
&lt;li&gt;Test mode allows any user to read and write to your database, which is convenient during development. However, this can be a security risk. Before releasing an app to production, you should add security rules.&lt;/li&gt;
&lt;/ul&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fU16VRcu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/720/1%2ABm9EyN60KIJzOHakHLQ3iQ.png" width="540" height="428"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HRJohy-7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/720/1%2ACBO-PoNGpRk9SaoZOvToOg.png" width="720" height="555"&gt;&lt;ul&gt;&lt;li&gt;Our database will have one collection, that we’ll name “candidate”. In the collection is where the names and votes are stored. Click &lt;strong&gt;Start Collection&lt;/strong&gt;, set the collection’s ID to &lt;code&gt;&lt;strong&gt;candidate&lt;/strong&gt;&lt;/code&gt;, then click &lt;strong&gt;Next&lt;/strong&gt;.&lt;/li&gt;&lt;/ul&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BBgElWYc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/720/1%2AduF9HT0AhhCogMhu4jWrzQ.png" width="720" height="412"&gt;&lt;ul&gt;
&lt;li&gt;You can now add documents to your collection. Each document has a &lt;strong&gt;Document ID&lt;/strong&gt;, and we’ll need to have &lt;strong&gt;name &lt;/strong&gt;and &lt;strong&gt;votes &lt;/strong&gt;fields.&lt;/li&gt;
&lt;li&gt;Enter a candidate name using all lowercase letters. In this example, we used &lt;code&gt;&lt;strong&gt;tom&lt;/strong&gt;&lt;/code&gt;.Using an actual candidate name for each Document ID ensures that the documents are displayed alphabetically by candidate name. By default, Document IDs are auto-generated timestamps, and documents are displayed in the order that they were created.&lt;/li&gt;
&lt;/ul&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TSiVrkPJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/720/1%2A63_Zqzp3VacQrWo7Bdwp9w.png" width="720" height="636"&gt;&lt;ul&gt;
&lt;li&gt;For the existing &lt;strong&gt;Field&lt;/strong&gt;, enter the value of &lt;code&gt;&lt;strong&gt;name&lt;/strong&gt;&lt;/code&gt;, select &lt;code&gt;&lt;strong&gt;string&lt;/strong&gt;&lt;/code&gt;&lt;strong&gt; &lt;/strong&gt;for the &lt;strong&gt;Type&lt;/strong&gt;, then enter the &lt;strong&gt;Value&lt;/strong&gt; of &lt;code&gt;&lt;strong&gt;Tom&lt;/strong&gt;&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Click the &lt;strong&gt;Add Field&lt;/strong&gt; icon to add a second field to contain the number of &lt;code&gt;&lt;strong&gt;votes&lt;/strong&gt;&lt;/code&gt;. Select &lt;code&gt;&lt;strong&gt;number&lt;/strong&gt;&lt;/code&gt;&lt;strong&gt; &lt;/strong&gt;for the &lt;strong&gt;Type&lt;/strong&gt;, then initialize the &lt;strong&gt;Value&lt;/strong&gt; as &lt;code&gt;0&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Save&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Add additional baby names by clicking &lt;strong&gt;Add Document&lt;/strong&gt;.After adding several documents to your collection, your database should look something like this:&lt;/li&gt;
&lt;/ul&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--o8jKry2a--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/1080/1%2AFxZ97mib5tTeuU-ik161qw.png" width="800" height="222"&gt;&lt;br&gt;Firestore Console&lt;h3&gt;Coding the application&lt;/h3&gt;
&lt;h4&gt;Add Cloud Firestore plugin to your app&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;From the root directory of your Flutter app, open your &lt;code&gt;&lt;strong&gt;pubspec.yaml&lt;/strong&gt;&lt;/code&gt; file.&lt;/li&gt;
&lt;li&gt;Add the FlutterFire plugin for the Cloud Firestore. All Flutter apps with Cloud Firestore, both iOS and Android versions, require the &lt;code&gt;&lt;strong&gt;cloud_firestore&lt;/strong&gt;&lt;/code&gt; plugin.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
&lt;ul&gt;&lt;li&gt;Run &lt;code&gt;&lt;strong&gt;flutter packages get&lt;/strong&gt;&lt;/code&gt;.&lt;/li&gt;&lt;/ul&gt;
&lt;h4&gt;Adding the User Interface&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Using your IDE or editor, open &lt;code&gt;&lt;strong&gt;lib/main.dart&lt;/strong&gt;&lt;/code&gt;. This file currently contains the entire code for the default Flutter app.&lt;/li&gt;
&lt;li&gt;Delete all of the code in &lt;code&gt;&lt;strong&gt;main.dart&lt;/strong&gt;&lt;/code&gt;, then replace it with the following:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
&lt;ul&gt;&lt;li&gt;Save the file, then &lt;strong&gt;hot-reload&lt;/strong&gt; your app. You should see the following app:&lt;/li&gt;&lt;/ul&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HD673c7E--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/720/1%2AqulyUYpUb9_6v12RZPsmqQ.png" width="720" height="1280"&gt;&lt;br&gt;Mock created with dummyData&lt;ul&gt;&lt;li&gt;The app is currently just a mock. Clicking on names only prints to the console. The next step is to connect this app to Cloud Firestore. Before doing that, you can read about how the code in &lt;code&gt;&lt;strong&gt;main.dart&lt;/strong&gt;&lt;/code&gt; is structured.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;The first half of this program is fairly straightforward:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You imported &lt;code&gt;&lt;strong&gt;cloud_firestore.dart&lt;/strong&gt;,&lt;/code&gt; a plugin for communicating with the Cloud Firestore.&lt;/li&gt;
&lt;li&gt;You added some dummy data (soon to be replaced by a Cloud Firestore instance).&lt;/li&gt;
&lt;li&gt;You set the app’s title to &lt;strong&gt;Voting Panel&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The interesting part of the code is in &lt;code&gt;&lt;strong&gt;_MyHomePageState&lt;/strong&gt;&lt;/code&gt;. The &lt;code&gt;&lt;strong&gt;build&lt;/strong&gt;&lt;/code&gt;&lt;strong&gt; &lt;/strong&gt;method in this block defines the widget hierarchy that Flutter uses to create the display for your app.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The app has an &lt;code&gt;&lt;strong&gt;AppBar&lt;/strong&gt;&lt;/code&gt; (with a title of &lt;strong&gt;Voting Panel&lt;/strong&gt;).&lt;/li&gt;
&lt;li&gt;The app’s body contains a &lt;code&gt;&lt;strong&gt;ListView&lt;/strong&gt;&lt;/code&gt;, which renders each of the dummy data points as individual list items.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The longest method by far is &lt;code&gt;&lt;strong&gt;_buildListItem&lt;/strong&gt;&lt;/code&gt;, which tells Flutter how to build each item in the list (displayed as the rounded rectangles with candidate names and the number of votes).&lt;/p&gt;
&lt;p&gt;Lastly, you have &lt;code&gt;&lt;strong&gt;Record&lt;/strong&gt;&lt;/code&gt;, the convenience class that holds a single record for a name. You don't strictly need this class for a simple app like this to function, but it makes the code a bit cleaner.&lt;/p&gt;
&lt;h4&gt;Connect your Flutter app to Cloud Firestore&lt;/h4&gt;
&lt;p&gt;Our app is now connected to Cloud Firestore! It’s time to fetch our collection (&lt;code&gt;&lt;strong&gt;candidate&lt;/strong&gt;&lt;/code&gt;) and use it instead of our &lt;code&gt;&lt;strong&gt;dummySnapshot&lt;/strong&gt;&lt;/code&gt;&lt;strong&gt; &lt;/strong&gt;object.&lt;/p&gt;
&lt;p&gt;From Dart, you get the reference to Cloud Firestore by calling &lt;code&gt;&lt;strong&gt;Firestore.instance&lt;/strong&gt;&lt;/code&gt;. Specifically for our collection of baby names, call &lt;code&gt;&lt;strong&gt;Firestore.instance.collection('candidate').snapshots()&lt;/strong&gt;&lt;/code&gt; to return a &lt;code&gt;&lt;strong&gt;stream&lt;/strong&gt;&lt;/code&gt;&lt;strong&gt; &lt;/strong&gt;of snapshots.&lt;/p&gt;
&lt;p&gt;Let’s plug that stream of data into our Flutter UI using a &lt;code&gt;&lt;strong&gt;StreamBuilder&lt;/strong&gt;&lt;/code&gt;&lt;strong&gt; &lt;/strong&gt;widget.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;In your IDE or editor, open &lt;code&gt;&lt;strong&gt;lib/main.dart&lt;/strong&gt;&lt;/code&gt;, then find the &lt;code&gt;&lt;strong&gt;_buildBody&lt;/strong&gt;&lt;/code&gt;&lt;strong&gt; &lt;/strong&gt;method.&lt;/li&gt;
&lt;li&gt;Replace the entire method with the following code:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
&lt;ul&gt;&lt;li&gt;The code that you just copy-pasted has a type error. It’s trying to pass a list of &lt;code&gt;&lt;strong&gt;DocumentSnapshot&lt;/strong&gt;&lt;/code&gt;&lt;strong&gt; &lt;/strong&gt;to a method that expects something else. Find &lt;code&gt;&lt;strong&gt;_buildList&lt;/strong&gt;&lt;/code&gt;&lt;strong&gt; &lt;/strong&gt;and change its signature to this:&lt;/li&gt;&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;&lt;strong&gt;Widget&lt;/strong&gt; _buildList(BuildContext context, List&amp;lt;DocumentSnapshot&amp;gt; snapshot) {&lt;br&gt;  ...&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;Instead of a list of &lt;code&gt;&lt;strong&gt;Map&lt;/strong&gt;&lt;/code&gt;, it now takes a list of &lt;code&gt;&lt;strong&gt;DocumentSnapshot&lt;/strong&gt;&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;We’re almost there. The method &lt;code&gt;&lt;strong&gt;_buildListItem&lt;/strong&gt;&lt;/code&gt;&lt;strong&gt; &lt;/strong&gt;still thinks it's getting a &lt;code&gt;&lt;strong&gt;Map&lt;/strong&gt;&lt;/code&gt;. Find the start of the method, then replace it with this:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;&lt;strong&gt;Widget&lt;/strong&gt; _buildListItem(BuildContext context, DocumentSnapshot data) {&lt;br&gt; final record = Record.fromSnapshot(data);&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;Instead of a &lt;code&gt;&lt;strong&gt;Map&lt;/strong&gt;&lt;/code&gt;, you're now taking a &lt;code&gt;&lt;strong&gt;DocumentSnapshot&lt;/strong&gt;&lt;/code&gt;, and using the &lt;code&gt;&lt;strong&gt;Record.fromSnapshot()&lt;/strong&gt;&lt;/code&gt; named constructor to build the &lt;code&gt;&lt;strong&gt;Record&lt;/strong&gt;&lt;/code&gt;. Remove the &lt;code&gt;&lt;strong&gt;dummySnapshot&lt;/strong&gt;&lt;/code&gt;&lt;strong&gt; &lt;/strong&gt;field from the top of &lt;code&gt;&lt;strong&gt;lib/main.dart&lt;/strong&gt;&lt;/code&gt;. It's not needed anymore.&lt;/li&gt;
&lt;li&gt;Save the file, then hot-reload your app. After about a second, your app should look like this:&lt;/li&gt;
&lt;/ul&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3f5engwq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/720/1%2Abrrbur5ZGdCGLrmG7-hAFA.png" width="720" height="1280"&gt;&lt;br&gt;Reading from the Cloud Firestore database&lt;p&gt;You’ve just read from the database that you created! If you want, you can go to the Firebase console and change the database. Your app will reflect the changes almost immediately (after all Cloud Firestore is a real-time database!).&lt;/p&gt;
&lt;h4&gt;Add interactivity&lt;/h4&gt;
&lt;p&gt;Next, you will allow users to actually vote!&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;In &lt;code&gt;&lt;strong&gt;lib/main.dart&lt;/strong&gt;&lt;/code&gt;, find the line that says &lt;code&gt;&lt;strong&gt;onTap: () =&amp;gt; print(record)&lt;/strong&gt;&lt;/code&gt;. Change it to this:&lt;/li&gt;&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;&lt;strong&gt;onTap&lt;/strong&gt;: () =&amp;gt; record.reference.&lt;strong&gt;updateData&lt;/strong&gt;({'votes': record.votes+1})&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Instead of just printing the record to the console, this new line updates the baby name’s database reference by incrementing the vote count by one.&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Save the file, then &lt;strong&gt;hot-reload&lt;/strong&gt; your app.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Voting is now functional, including the update to the user interface.&lt;/p&gt;
&lt;blockquote&gt;
&lt;strong&gt;How does this work?&lt;/strong&gt;&lt;br&gt;When the user taps the tile containing a name, you are telling Cloud Firestore to update the data of that reference. In turn, this causes Cloud Firestore to notify all listeners with the updated snapshot. As your app is listening through the &lt;code&gt;StreamBuilder&lt;/code&gt; implemented above, it's updated with the new data.&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Here are the final contents of &lt;/strong&gt;&lt;code&gt;&lt;strong&gt;lib/main.dart&lt;/strong&gt;&lt;/code&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;

&lt;h3&gt;Building &amp;amp; running the application&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Connect your Emulator or physical Android device to test the application.&lt;/li&gt;
&lt;li&gt;Click on Build &amp;amp; Run.&lt;/li&gt;
&lt;li&gt;And Boooom 🔥, your app is ready.The final build would look like the below illustration.&lt;/li&gt;
&lt;/ul&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Relsoav---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://cdn-images-1.medium.com/max/720/1%2A6uLYCQE4eHbxoh29dZClZQ.gif" width="600" height="1066"&gt;&lt;br&gt;That’s how the Final Implementation will look like
&lt;h3&gt;🎯 That’s all for today.&lt;/h3&gt;
&lt;blockquote&gt;If you got any queries hit me up in the comments or ping me over on &lt;a href="mailto:hi@itsshivam.com"&gt;&lt;/a&gt;&lt;a href="mailto:hi@itsshivam.com"&gt;hi@itsshivam.com&lt;/a&gt; 📧&lt;/blockquote&gt;
&lt;blockquote&gt;If you learned even a thing or two, clap your hands👏 as many times as you can to show your support! It really motivates me to contribute towards the community.&lt;/blockquote&gt;
&lt;blockquote&gt;Feeling too generous? &lt;a href="https://www.paypal.me/shivamgoyal1899/" rel="noopener noreferrer"&gt;Buy me a Drink&lt;/a&gt; 🍺&lt;/blockquote&gt;
&lt;blockquote&gt;Wanna collaborate? &lt;a href="mailto:hi@itsshivam.com"&gt;Let’s talk some tech&lt;/a&gt; 😊&lt;/blockquote&gt;
&lt;blockquote&gt;Stalk me over on &lt;a href="https://itsshivam.com/" rel="noopener noreferrer"&gt;itsshivam.com&lt;/a&gt;, &lt;a href="https://github.com/ShivamGoyal1899" rel="noopener nofollow noreferrer"&gt;GitHub&lt;/a&gt;, or &lt;a href="https://linkedin.com/in/shivamgoyal1899/" rel="noopener nofollow noreferrer"&gt;LinkedIn&lt;/a&gt;. 👀&lt;/blockquote&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--AFWYAUiG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/720/1%2Ar5VeD2fV04iDy8xfmaauHA.png" width="720" height="17"&gt;&lt;p&gt;This article was originally published at &lt;a href="https://enappd.com" rel="noopener noreferrer"&gt;Enappd&lt;/a&gt;.&lt;/p&gt;


</description>
      <category>flutter</category>
      <category>firebase</category>
      <category>firestore</category>
      <category>cloud</category>
    </item>
    <item>
      <title>Building an iOS-style Shopping App with a minimalist design using Flutter</title>
      <dc:creator>Shivam Goyal</dc:creator>
      <pubDate>Wed, 25 Mar 2020 21:30:59 +0000</pubDate>
      <link>https://dev.to/enappd/building-an-ios-style-shopping-app-with-a-minimalist-design-using-flutter-22ld</link>
      <guid>https://dev.to/enappd/building-an-ios-style-shopping-app-with-a-minimalist-design-using-flutter-22ld</guid>
      <description>
&lt;p&gt;The Material Design language was created for any platform, not just Android. When you write a Material app in Flutter, it has the Material look and feels on all devices, even iOS. If you want your app to &lt;em&gt;look&lt;/em&gt; like a standard iOS-styled app, then you would use the Cupertino library.&lt;/p&gt;
&lt;p&gt;You can technically run a Cupertino app on either Android or iOS, but (due to licensing issues) Cupertino won’t have the correct fonts on Android. For this reason, use an iOS-specific device when writing a Cupertino app.&lt;/p&gt;
&lt;h4&gt;What you’ll build?&lt;/h4&gt;
&lt;p&gt;In this tutorial, you’ll build a shopping app with an iOS materialistic design using the Flutter SDK. Your app will have:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Three tabs for &lt;strong&gt;Products&lt;/strong&gt;, &lt;strong&gt;Search&lt;/strong&gt; and &lt;strong&gt;Cart&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Holistic flow for buying any product.&lt;/li&gt;
&lt;li&gt;Use the &lt;code&gt;&lt;strong&gt;provider&lt;/strong&gt;&lt;/code&gt;&lt;strong&gt; &lt;/strong&gt;package to manage state between screens.&lt;/li&gt;
&lt;/ul&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BKh_4R7E--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/720/1%2A308ry-b9mD5sZxxbtaedcQ.png" width="720" height="1280"&gt;&lt;p&gt;This tutorial focuses on building important components and Cupertino layout. Non-relevant concepts and code blocks are glossed over and are provided for you to simply copy and paste.&lt;/p&gt;
&lt;h4&gt;Github Repository | &lt;a href="https://github.com/ShivamGoyal1899/CupertinoShoppingApp" rel="noopener noreferrer"&gt;@ShivamGoyal1899&lt;/a&gt;
&lt;/h4&gt;

&lt;h4&gt;Package Used | &lt;a href="https://pub.dev/packages/provider" rel="noopener noreferrer"&gt;provider&lt;/a&gt;
&lt;/h4&gt;

&lt;h3&gt;Setting up Flutter on your machine&lt;/h3&gt;
&lt;p&gt;The detailed steps to install Flutter on your personal computer &amp;amp; getting started with Flutter is available at the following blog post &lt;a href="https://medium.com/enappd/install-flutter-on-windows-and-mac-1fd1dde453ba" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Coding the application&lt;/h3&gt;
&lt;h4&gt;Create the initial Cupertino app&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Create a simple templated Flutter app, using the instructions in the above blog. Name the project &lt;strong&gt;cupertino_store.&lt;/strong&gt; You’ll be modifying this starter app to create the finished app.&lt;/li&gt;
&lt;li&gt;Replace the contents of &lt;code&gt;&lt;strong&gt;main.dart&lt;/strong&gt;&lt;/code&gt;&lt;strong&gt; &lt;/strong&gt;with the following code.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
&lt;ul&gt;&lt;li&gt;Add a file to the &lt;code&gt;&lt;strong&gt;lib&lt;/strong&gt;&lt;/code&gt;&lt;strong&gt; &lt;/strong&gt;directory called &lt;code&gt;&lt;strong&gt;styles.dart&lt;/strong&gt;&lt;/code&gt;. The &lt;code&gt;&lt;strong&gt;Styles&lt;/strong&gt;&lt;/code&gt;&lt;strong&gt; &lt;/strong&gt;class defines the text and color styling to customize the app.&lt;/li&gt;&lt;/ul&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
&lt;ul&gt;&lt;li&gt;Add the following &lt;code&gt;&lt;strong&gt;CupertinoStoreApp&lt;/strong&gt;&lt;/code&gt;&lt;strong&gt; &lt;/strong&gt;class to &lt;code&gt;&lt;strong&gt;lib/app.dart&lt;/strong&gt;&lt;/code&gt;.&lt;/li&gt;&lt;/ul&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
&lt;ul&gt;&lt;li&gt;Add the following &lt;code&gt;&lt;strong&gt;CupertinoStoreHomePage&lt;/strong&gt;&lt;/code&gt;&lt;strong&gt; &lt;/strong&gt;class to &lt;code&gt;&lt;strong&gt;lib/app.dart&lt;/strong&gt;&lt;/code&gt; to create the layout for the homepage.&lt;/li&gt;&lt;/ul&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
&lt;ul&gt;&lt;li&gt;At the top of the project, edit the &lt;code&gt;&lt;strong&gt;pubspec.yaml&lt;/strong&gt;&lt;/code&gt; file. Add the libraries that you will need, and a list of the image assets.&lt;/li&gt;&lt;/ul&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
&lt;h4&gt;Create the structure for a 3-tab app&lt;/h4&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kOi36f41--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/720/1%2ALkWTLn2vGc5hkSJFkHo0zQ.png" width="720" height="86"&gt;&lt;br&gt;BottomAppBar&lt;ul&gt;
&lt;li&gt;The final app features 3 tabs:Product list | Product search | Shopping cart&lt;/li&gt;
&lt;li&gt;Replace the &lt;code&gt;&lt;strong&gt;CupertinoStoreHomePage&lt;/strong&gt;&lt;/code&gt;&lt;strong&gt; &lt;/strong&gt;class with the following, which sets up a 3-tab scaffold:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
&lt;ul&gt;&lt;li&gt;Create a &lt;code&gt;&lt;strong&gt;lib/product_list_tab.dart&lt;/strong&gt;&lt;/code&gt;&lt;strong&gt; &lt;/strong&gt;file for the first tab that compiles cleanly, but only displays a white screen. Use the following content:&lt;/li&gt;&lt;/ul&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
&lt;ul&gt;&lt;li&gt;Create a &lt;code&gt;&lt;strong&gt;lib/search_tab.dart&lt;/strong&gt;&lt;/code&gt; file that compiles cleanly, but only displays a white screen. Use the following content:&lt;/li&gt;&lt;/ul&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
&lt;ul&gt;&lt;li&gt;Create a &lt;code&gt;&lt;strong&gt;lib/shopping_cart_tab.dart&lt;/strong&gt;&lt;/code&gt; file that compiles cleanly, but only displays a white screen. Use the following content:&lt;/li&gt;&lt;/ul&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
&lt;ul&gt;&lt;li&gt;Update the import statements in &lt;code&gt;&lt;strong&gt;lib/app.dart&lt;/strong&gt;&lt;/code&gt; to pull in the new tab widgets:&lt;/li&gt;&lt;/ul&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
&lt;h4&gt;Add state management&lt;/h4&gt;
&lt;ul&gt;&lt;li&gt;Create a &lt;code&gt;&lt;strong&gt;model&lt;/strong&gt;&lt;/code&gt; directory under &lt;code&gt;&lt;strong&gt;lib&lt;/strong&gt;&lt;/code&gt;. Add a &lt;code&gt;&lt;strong&gt;lib/model/product.dart&lt;/strong&gt;&lt;/code&gt; file that defines the product data coming from the data source:&lt;/li&gt;&lt;/ul&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
&lt;ul&gt;&lt;li&gt;Create a &lt;code&gt;&lt;strong&gt;lib/model/products_repository.dart&lt;/strong&gt;&lt;/code&gt; file. This file contains all products for sale. Each product belongs to a category.&lt;/li&gt;&lt;/ul&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
&lt;ul&gt;&lt;li&gt;Here is the list of method signatures provided by this class.&lt;/li&gt;&lt;/ul&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
&lt;ul&gt;&lt;li&gt;In the &lt;code&gt;&lt;strong&gt;main()&lt;/strong&gt;&lt;/code&gt;method, initialize the model. Add the lines marked with NEW.&lt;/li&gt;&lt;/ul&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
&lt;h4&gt;List products for sale&lt;/h4&gt;
&lt;ul&gt;&lt;li&gt;Create the &lt;code&gt;lib/product_row_item.dart file&lt;/code&gt;, with the following content:&lt;/li&gt;&lt;/ul&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
&lt;ul&gt;&lt;li&gt;In &lt;code&gt;&lt;strong&gt;lib/product_list_tab.dart&lt;/strong&gt;&lt;/code&gt;, import the &lt;code&gt;&lt;strong&gt;product_row_item.dart&lt;/strong&gt;&lt;/code&gt; file.&lt;/li&gt;&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;&lt;strong&gt;import&lt;/strong&gt; 'package:flutter/cupertino.dart';&lt;br&gt;&lt;strong&gt;import&lt;/strong&gt; 'package:provider/provider.dart';&lt;br&gt;&lt;strong&gt;import&lt;/strong&gt; 'model/app_state_model.dart';&lt;br&gt;&lt;strong&gt;import&lt;/strong&gt; 'product_row_item.dart';      &lt;strong&gt;&lt;em&gt;// add this line&lt;/em&gt;&lt;/strong&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;&lt;li&gt;In the &lt;code&gt;&lt;strong&gt;build()&lt;/strong&gt;&lt;/code&gt; method for &lt;code&gt;&lt;strong&gt;ProductRowTab&lt;/strong&gt;&lt;/code&gt;, get the product list and the number of products. Add the new lines indicated below:&lt;/li&gt;&lt;/ul&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
&lt;ul&gt;&lt;li&gt;Also in the &lt;code&gt;&lt;strong&gt;build()&lt;/strong&gt;&lt;/code&gt; method, add a new sliver to the sliver widgets list to hold the product list. Add the new lines indicated below:&lt;/li&gt;&lt;/ul&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
&lt;h4&gt;Add product search&lt;/h4&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0mkmUoAx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://cdn-images-1.medium.com/max/720/1%2Afeb51AWSGeWjmu1JtdBNKA.gif" width="480" height="266"&gt;&lt;ul&gt;&lt;li&gt;Update the imports in &lt;code&gt;lib/search_tab.dart&lt;/code&gt;. Add imports for the classes that the search tab will use:&lt;/li&gt;&lt;/ul&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
&lt;ul&gt;&lt;li&gt;Update the &lt;code&gt;build()&lt;/code&gt; method in &lt;code&gt;_SearchTabState&lt;/code&gt;. Initialize the model and replace the &lt;code&gt;CustomScrollView&lt;/code&gt; with individual components for searching and listing.&lt;/li&gt;&lt;/ul&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
&lt;ul&gt;&lt;li&gt;Add supporting variables, functions, and methods to the &lt;code&gt;_SearchTabState&lt;/code&gt; class. These include &lt;code&gt;initState()&lt;/code&gt;, &lt;code&gt;dispose()&lt;/code&gt;, &lt;code&gt;_onTextChanged()&lt;/code&gt;, and &lt;code&gt;_buildSearchBox()&lt;/code&gt;, as shown below:&lt;/li&gt;&lt;/ul&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
&lt;ul&gt;&lt;li&gt;Create a new file, &lt;code&gt;lib/search_bar.dart&lt;/code&gt;. The &lt;code&gt;SearchBar&lt;/code&gt; class handles the actual search on the product list. Seed the file with the following content:&lt;/li&gt;&lt;/ul&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
&lt;h4&gt;Add customer info&lt;/h4&gt;
&lt;ul&gt;&lt;li&gt;Update the &lt;code&gt;&lt;strong&gt;lib/shopping_cart_tab.dart&lt;/strong&gt;&lt;/code&gt; file. Add private methods for building the name, email, and location fields. Then add a &lt;code&gt;&lt;strong&gt;_buildSliverChildBuildDelegate()&lt;/strong&gt;&lt;/code&gt; method that builds out parts of the user interface.&lt;/li&gt;&lt;/ul&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
&lt;ul&gt;&lt;li&gt;Update the &lt;code&gt;&lt;strong&gt;build()&lt;/strong&gt;&lt;/code&gt; method in the &lt;code&gt;&lt;strong&gt;_SearchTabState&lt;/strong&gt;&lt;/code&gt;&lt;strong&gt; &lt;/strong&gt;class. Add a &lt;code&gt;&lt;strong&gt;SliverSafeArea&lt;/strong&gt;&lt;/code&gt;&lt;strong&gt; &lt;/strong&gt;that calls the &lt;code&gt;&lt;strong&gt;_buildSliverChildBuildingDelegate&lt;/strong&gt;&lt;/code&gt; method:&lt;/li&gt;&lt;/ul&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
&lt;h4&gt;Add date picker&lt;/h4&gt;
&lt;ul&gt;&lt;li&gt;Add imports and a &lt;code&gt;&lt;strong&gt;const&lt;/strong&gt;&lt;/code&gt; to &lt;code&gt;&lt;strong&gt;lib/shopping_cart_tab.dart&lt;/strong&gt;&lt;/code&gt;. Add the new lines, as shown:&lt;/li&gt;&lt;/ul&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
&lt;ul&gt;&lt;li&gt;Add a &lt;code&gt;&lt;strong&gt;_buildDateAndTimePicker()&lt;/strong&gt;&lt;/code&gt; function to the &lt;code&gt;&lt;strong&gt;_ShoppingCartTab&lt;/strong&gt;&lt;/code&gt; widget. Add the function, as follows:&lt;/li&gt;&lt;/ul&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
&lt;ul&gt;&lt;li&gt;Add a call to build the date and time UI, to the &lt;code&gt;&lt;strong&gt;_buildSliverChildBuilderDelegate&lt;/strong&gt;&lt;/code&gt;&lt;strong&gt; &lt;/strong&gt;function. Add the new code, as shown:&lt;/li&gt;&lt;/ul&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
&lt;h4&gt;Add selected items for purchase&lt;/h4&gt;
&lt;ul&gt;&lt;li&gt;Import the product package in &lt;code&gt;&lt;strong&gt;shopping_cart_tab.dart&lt;/strong&gt;&lt;/code&gt;.&lt;/li&gt;&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;&lt;strong&gt;import&lt;/strong&gt; 'model/product.dart';&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;&lt;li&gt;Add a currency format to the &lt;code&gt;&lt;strong&gt;_ShoppingCartTabState&lt;/strong&gt;&lt;/code&gt;&lt;strong&gt; &lt;/strong&gt;class.&lt;/li&gt;&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;&lt;strong&gt;final&lt;/strong&gt; _currencyFormat = NumberFormat.&lt;strong&gt;currency&lt;/strong&gt;(symbol: '\$');&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;&lt;li&gt;Add a product index to the &lt;code&gt;&lt;strong&gt;_buildSliverChildBuilderDelegate&lt;/strong&gt;&lt;/code&gt;&lt;strong&gt; &lt;/strong&gt;function.&lt;/li&gt;&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;SliverChildBuilderDelegate _buildSliverChildBuilderDelegate(&lt;br&gt;   AppStateModel model) {&lt;br&gt; return SliverChildBuilderDelegate(&lt;br&gt;   (context, index) {&lt;br&gt;     final productIndex = index - 4;    &lt;em&gt;// NEW&lt;/em&gt;&lt;br&gt;     switch (index) {]&lt;br&gt;  &lt;em&gt;// ...&lt;/em&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;&lt;li&gt;In the same function, display the items to purchase. Add the code to the &lt;code&gt;&lt;strong&gt;default:&lt;/strong&gt;&lt;/code&gt; section of the switch statement, as follows:&lt;/li&gt;&lt;/ul&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;

&lt;h3&gt;Building &amp;amp; running the application&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Connect your Emulator or physical Android device to test the application.&lt;/li&gt;
&lt;li&gt;Click on Build &amp;amp; Run.&lt;/li&gt;
&lt;li&gt;And Boooom 🔥, your app is ready.The final build would look like the below illustration.&lt;/li&gt;
&lt;/ul&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rZDBaRk2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://cdn-images-1.medium.com/max/720/1%2A7vgO_HahD3t-T6ztdqcraQ.gif" width="600" height="1066"&gt;
&lt;h3&gt;🎯 That’s all for today.&lt;/h3&gt;
&lt;blockquote&gt;If you got any queries hit me up in the comments or ping me over on &lt;a href="mailto:hi@itsshivam.com"&gt;&lt;/a&gt;&lt;a href="mailto:hi@itsshivam.com"&gt;hi@itsshivam.com&lt;/a&gt; 📧&lt;/blockquote&gt;
&lt;blockquote&gt;If you learned even a thing or two, clap your hands👏 as many times as you can to show your support! It really motivates me to contribute towards the community.&lt;/blockquote&gt;
&lt;blockquote&gt;Feeling too generous? &lt;a href="https://www.paypal.me/shivamgoyal1899/" rel="noopener noreferrer"&gt;Buy me a Drink&lt;/a&gt; 🍺&lt;/blockquote&gt;
&lt;blockquote&gt;Wanna collaborate? &lt;a href="mailto:hi@itsshivam.com"&gt;Let’s talk some tech&lt;/a&gt; 😊&lt;/blockquote&gt;
&lt;blockquote&gt;Stalk me over on &lt;a href="https://itsshivam.com/" rel="noopener noreferrer"&gt;itsshivam.com&lt;/a&gt;, &lt;a href="https://github.com/ShivamGoyal1899" rel="noopener nofollow noreferrer"&gt;GitHub&lt;/a&gt;, or &lt;a href="https://linkedin.com/in/shivamgoyal1899/" rel="noopener nofollow noreferrer"&gt;LinkedIn&lt;/a&gt;. 👀&lt;/blockquote&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--AFWYAUiG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/720/1%2Ar5VeD2fV04iDy8xfmaauHA.png" width="720" height="17"&gt;

</description>
      <category>flutter</category>
      <category>cupertino</category>
      <category>ios</category>
      <category>shopping</category>
    </item>
    <item>
      <title>Building a Flutter DateTime Picker in just 15 minutes</title>
      <dc:creator>Shivam Goyal</dc:creator>
      <pubDate>Wed, 25 Mar 2020 05:14:00 +0000</pubDate>
      <link>https://dev.to/enappd/building-a-flutter-datetime-picker-in-just-15-minutes-1530</link>
      <guid>https://dev.to/enappd/building-a-flutter-datetime-picker-in-just-15-minutes-1530</guid>
      <description>
&lt;p&gt;With the &lt;a href="https://pub.dev/packages/flutter_datetime_picker" rel="noopener noreferrer"&gt;Flutter DateTime Picker plugin&lt;/a&gt;, you can add date &amp;amp; time pickers to your native application. The plugin’s interface is inspired by the iOS Cupertino style menu.&lt;/p&gt;
&lt;h4&gt;What you’ll build?&lt;/h4&gt;
&lt;p&gt;In this tutorial, you’ll build a mobile app featuring a DateTime Picker using the Flutter SDK. Your app will:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Display separate Date &amp;amp; Time Pickers with a minimalistic interface&lt;/li&gt;
&lt;li&gt;Display the selected data as outputs to console&lt;/li&gt;
&lt;/ul&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mtBOKIO3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/720/1%2AQ90FHAfT2z5cImKivaL9BA.png" width="720" height="287"&gt;&lt;br&gt;That’s how our DateTime Picker gonna look&lt;p&gt;This tutorial focuses on adding a DateTime Picker to a Flutter app. Non-relevant concepts and code blocks are glossed over and are provided for you to simply copy and paste.&lt;/p&gt;
&lt;h4&gt;Github Repository | @ShivamGoyal1899&lt;/h4&gt;
&lt;a href="https://github.com/ShivamGoyal1899/DateTimePicker" title="https://github.com/ShivamGoyal1899/DateTimePicker" rel="noopener noreferrer"&gt;&lt;strong&gt;ShivamGoyal1899/DateTimePicker&lt;/strong&gt;&lt;br&gt;&lt;em&gt;With the Flutter DateTime Picker plugin, you can add date &amp;amp; time pickers to your native application. The plugin's…&lt;/em&gt;github.com&lt;/a&gt;&lt;a href="https://github.com/ShivamGoyal1899/DateTimePicker" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;h4&gt;Package Used | flutter_datetime_picker&lt;/h4&gt;
&lt;a href="https://pub.dev/packages/flutter_datetime_picker" title="https://pub.dev/packages/flutter_datetime_picker" rel="noopener noreferrer"&gt;&lt;strong&gt;flutter_datetime_picker | Flutter Package&lt;/strong&gt;&lt;br&gt;&lt;em&gt;(Pub) flutter_datetime_picker A flutter date time picker inspired by flutter-cupertino-date-picker you can choose date…&lt;/em&gt;pub.dev&lt;/a&gt;&lt;a href="https://pub.dev/packages/flutter_datetime_picker" rel="noopener noreferrer"&gt;&lt;/a&gt;
&lt;h3&gt;Setting up Flutter on your machine&lt;/h3&gt;
&lt;p&gt;The detailed steps to install Flutter on your personal computer &amp;amp; getting started with Flutter is available at the following blog&lt;/p&gt;
&lt;a href="https://medium.com/enappd/install-flutter-on-windows-and-mac-1fd1dde453ba" title="https://medium.com/enappd/install-flutter-on-windows-and-mac-1fd1dde453ba" rel="noopener noreferrer"&gt;&lt;strong&gt;How to install Flutter on Mac &amp;amp; Windows&lt;/strong&gt;&lt;br&gt;&lt;em&gt;Learn about Flutter and how to set it up on Windows and Mac systems&lt;/em&gt;medium.com&lt;/a&gt;&lt;a href="https://medium.com/enappd/install-flutter-on-windows-and-mac-1fd1dde453ba" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;h3&gt;Coding the component&lt;/h3&gt;
&lt;h4&gt;Component Syntax&lt;/h4&gt;
&lt;p&gt;The basic format of a DateTime Picker looks like the one below:&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
&lt;h4&gt;Adding DateTime Picker plugin as a dependency&lt;/h4&gt;
&lt;p&gt;Adding additional capability to a Flutter app is easy using &lt;a href="https://pub.dev/flutter" rel="noopener noreferrer"&gt;Pub packages&lt;/a&gt;. In this tutorial, you introduce the &lt;a href="https://pub.dev/packages/flutter_datetime_picker" rel="noopener noreferrer"&gt;DateTime Picker plugin&lt;/a&gt; by adding a single line to the &lt;code&gt;pubspec.yaml&lt;/code&gt; file.&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
&lt;h4&gt;Importing plugin to main.dart file&lt;/h4&gt;
&lt;p&gt;Import &lt;strong&gt;flutter_datetime_picker&lt;/strong&gt; dependency to your main.dart file by adding the following line at the starting of the file:&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
&lt;h4&gt;Putting Code in action&lt;/h4&gt;
&lt;p&gt;Amend your main.dart file as per the following code:&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
&lt;h4&gt;Building &amp;amp; running the application&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Connect your Emulator or physical Android device to test the application.&lt;/li&gt;
&lt;li&gt;Click on Build &amp;amp; Run.&lt;/li&gt;
&lt;li&gt;And Boooom, your app is ready.The final build would look like the below illustration.&lt;/li&gt;
&lt;/ul&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--cgprWcZf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://cdn-images-1.medium.com/max/720/1%2AyMUKAc0Z2tNcEV-eMI2UfA.gif" width="600" height="1066"&gt;&lt;br&gt;The final output of the implementation
&lt;h3&gt;Customization Options&lt;/h3&gt;
&lt;p&gt;There are three functional variations of the plugin available as follows:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Solo DatePicker&lt;/li&gt;
&lt;li&gt;Solo TimePicker&lt;/li&gt;
&lt;li&gt;Dual DateTimePicker&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Language Options&lt;/h4&gt;
&lt;p&gt;There are various language options available to implement the plugin for international use. For changing the language of the component amend the following with preferred &lt;strong&gt;LocaleType&lt;/strong&gt;.&lt;/p&gt;
&lt;pre&gt;locale: LocaleType.&lt;strong&gt;en&lt;/strong&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;English(en)&lt;/li&gt;
&lt;li&gt;Persian(fa)&lt;/li&gt;
&lt;li&gt;Chinese(zh)&lt;/li&gt;
&lt;li&gt;Dutch(nl)&lt;/li&gt;
&lt;li&gt;Russian(ru)&lt;/li&gt;
&lt;li&gt;Italian(it)&lt;/li&gt;
&lt;li&gt;French(fr)&lt;/li&gt;
&lt;li&gt;Spanish(es)&lt;/li&gt;
&lt;li&gt;Polish (pl)&lt;/li&gt;
&lt;li&gt;Portuguese(pt)&lt;/li&gt;
&lt;li&gt;Korean(ko)&lt;/li&gt;
&lt;li&gt;Arabic(ar)&lt;/li&gt;
&lt;li&gt;Turkish(tr)&lt;/li&gt;
&lt;li&gt;Japanese(jp)&lt;/li&gt;
&lt;li&gt;German(de)&lt;/li&gt;
&lt;li&gt;Danish(da)&lt;/li&gt;
&lt;li&gt;Bengali(bn)&lt;/li&gt;
&lt;li&gt;Vietnamese(vi)&lt;/li&gt;
&lt;li&gt;Armenian(hy)&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Further Customisations&lt;/h4&gt;
&lt;p&gt;If you want to customize your own style of date time picker, there is a class called CommonPickerModel, every type of date time picker is extended from this class, you can refer to other picker models (eg. DatePickerModel), and write your custom one, then pass this model to showPicker method, so that your own date time picker will appear, it’s easy, and will perfectly meet your demand.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How to customize your own picker model:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;

&lt;h3&gt;🔍 Read more of my Articles&lt;/h3&gt;
&lt;a href="https://medium.com/enappd/adding-firebase-to-your-flutter-app-281b8f391b47" title="https://medium.com/enappd/adding-firebase-to-your-flutter-app-281b8f391b47" rel="noopener noreferrer"&gt;&lt;strong&gt;Adding Firebase to your Flutter App&lt;/strong&gt;&lt;br&gt;&lt;em&gt;Learn how to easily integrate Firebase in Flutter with a step by step guide.&lt;/em&gt;medium.com&lt;/a&gt;&lt;a href="https://medium.com/enappd/adding-firebase-to-your-flutter-app-281b8f391b47" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;a href="https://medium.com/enappd/flutter-tutorial-for-native-app-building-and-facebook-authentication-978f0ee44976" title="https://medium.com/enappd/flutter-tutorial-for-native-app-building-and-facebook-authentication-978f0ee44976" rel="noopener noreferrer"&gt;&lt;strong&gt;How to add Facebook Authentication to your Flutter App&lt;/strong&gt;&lt;br&gt;&lt;em&gt;Learn how to add Facebook OAuth to your Flutter App with easy step by step guide&lt;/em&gt;medium.com&lt;/a&gt;&lt;a href="https://medium.com/enappd/flutter-tutorial-for-native-app-building-and-facebook-authentication-978f0ee44976" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;a href="https://medium.com/flutter-community/building-a-flutter-alertdialog-in-just-15-minutes-57fb81b73698" title="https://medium.com/flutter-community/building-a-flutter-alertdialog-in-just-15-minutes-57fb81b73698" rel="noopener noreferrer"&gt;&lt;strong&gt;Building a Flutter AlertDialog in just 15 minutes&lt;/strong&gt;&lt;br&gt;&lt;em&gt;Learn how to implement a customized Alert Dialog / Popup in Flutter.&lt;/em&gt;medium.com&lt;/a&gt;&lt;a href="https://medium.com/flutter-community/building-a-flutter-alertdialog-in-just-15-minutes-57fb81b73698" rel="noopener noreferrer"&gt;&lt;/a&gt;
&lt;h3&gt;🎯 That’s all for today.&lt;/h3&gt;
&lt;blockquote&gt;If you got any queries hit me up in the comments or ping me over on &lt;a href="mailto:hi@itsshivam.com"&gt;&lt;/a&gt;&lt;a href="mailto:hi@itsshivam.com"&gt;hi@itsshivam.com&lt;/a&gt; 📧&lt;/blockquote&gt;
&lt;blockquote&gt;If you learned even a thing or two, clap your hands👏 as many times as you can to show your support! It really motivates me to contribute towards the community.&lt;/blockquote&gt;
&lt;blockquote&gt;Feeling too generous? &lt;a href="https://www.paypal.me/shivamgoyal1899/" rel="noopener noreferrer"&gt;Buy me a Drink&lt;/a&gt; 🍺&lt;/blockquote&gt;
&lt;blockquote&gt;Wanna collaborate? &lt;a href="mailto:hi@itsshivam.com"&gt;Let’s talk some tech&lt;/a&gt; 😊&lt;/blockquote&gt;
&lt;blockquote&gt;Stalk me over on &lt;a href="https://itsshivam.com/" rel="noopener noreferrer"&gt;itsshivam.com&lt;/a&gt;, &lt;a href="https://github.com/ShivamGoyal1899" rel="noopener nofollow noreferrer"&gt;GitHub&lt;/a&gt;, or &lt;a href="https://linkedin.com/in/shivamgoyal1899/" rel="noopener nofollow noreferrer"&gt;LinkedIn&lt;/a&gt;. 👀&lt;/blockquote&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--AFWYAUiG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/720/1%2Ar5VeD2fV04iDy8xfmaauHA.png" width="720" height="17"&gt;&lt;a href="https://store.enappd.com" title="https://store.enappd.com" rel="noopener noreferrer"&gt;&lt;strong&gt;Enappd | Ionic, React Native, Firebase themes, templates and starters&lt;/strong&gt;&lt;br&gt;&lt;em&gt;Get full source code for Ionic, React Native, Firebase mobile app templates and starters. Use free templates and…&lt;/em&gt;store.enappd.com&lt;/a&gt;&lt;a href="https://store.enappd.com" rel="noopener noreferrer"&gt;&lt;/a&gt;

</description>
      <category>android</category>
      <category>ios</category>
      <category>flutter</category>
      <category>datetimepicker</category>
    </item>
    <item>
      <title>Understanding Version Control Systems: GitHub Simplified with SourceTree</title>
      <dc:creator>Shivam Goyal</dc:creator>
      <pubDate>Fri, 27 Sep 2019 14:21:37 +0000</pubDate>
      <link>https://dev.to/gh-campus-experts/understanding-version-control-systems-github-simplified-with-sourcetree-4n50</link>
      <guid>https://dev.to/gh-campus-experts/understanding-version-control-systems-github-simplified-with-sourcetree-4n50</guid>
      <description>&lt;h2&gt;
  
  
  What is a Version Control System?
&lt;/h2&gt;

&lt;p&gt;Version control systems are a category of software tools that help a software team manage changes to source code over time. Version control software keeps track of every modification to the code in a special kind of database. If a mistake is made, developers can turn back the clock and compare earlier versions of the code to help fix the mistake while minimizing disruption to all team members.&lt;/p&gt;

&lt;p&gt;In simple words, Version Control enables your code to live long by logging the state continuously, in an easily accessible format.&lt;/p&gt;

&lt;h2&gt;
  
  
  Do we developers really need VCS?
&lt;/h2&gt;

&lt;p&gt;Having a VCS linked to your project is not a mandatory feature, but surely is a recommended one.&lt;/p&gt;

&lt;p&gt;Having a VCS makes it easy to track &lt;strong&gt;'who developed what'&lt;/strong&gt; when the project is being developed on multiple devices simultaneously, by multiple developers.&lt;/p&gt;

&lt;p&gt;While it is possible to develop software without using any version control, doing so subjects the project to a huge risk that no professional team would be advised to accept. So the question is not whether to use version control but &lt;strong&gt;which version control system to use.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Which Version Control is best for you?
&lt;/h2&gt;

&lt;p&gt;There are plenty of choices available in the market including:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Git&lt;/li&gt;
&lt;li&gt;Mercurial&lt;/li&gt;
&lt;li&gt;SVN&lt;/li&gt;
&lt;li&gt;CVS&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The industry’s most used VCS is &lt;strong&gt;Git&lt;/strong&gt; and hence is the most recommended one. Here, we will only be talking about Git.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pros &amp;amp; Cons of Git Version Control
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Pros of using Git
&lt;/h3&gt;

&lt;p&gt;It’s exactly why to pick Git over others.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Distributed fault-tolerant network architecture&lt;/li&gt;
&lt;li&gt;Optimized for fast commits and checkouts&lt;/li&gt;
&lt;li&gt;Non-destructive updates through the use of an immutable log&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Cons of using Git
&lt;/h3&gt;

&lt;p&gt;Nothing is perfect, hence is Git.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Weak support for large binary files&lt;/li&gt;
&lt;li&gt;Very large repositories with extensive history can slow down interactions&lt;/li&gt;
&lt;li&gt;Learning curve and un-intuitive commands&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Setting up Git
&lt;/h2&gt;

&lt;p&gt;Now, it’s time to set up Git on your system.&lt;/p&gt;

&lt;p&gt;There are plenty of ways to start with, but we will be using a &lt;strong&gt;VCS&lt;/strong&gt; client called &lt;strong&gt;SourceTree&lt;/strong&gt; as it’s the most prevailing VCS client in the tech industry.&lt;/p&gt;

&lt;h3&gt;
  
  
  Reasons for choosing SourceTree
&lt;/h3&gt;

&lt;p&gt;There are five major reasons for choosing SourceTree over Command-Line or any other Git client.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Branch management&lt;/strong&gt;&lt;br&gt;
Managing branches in Sourcetree is easy. It enables you to switch working copies with a single click. It also tells you how far ahead or behind you are to the version in the repository, and alerts you to push or pull. Know where you are with visual branch management.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Working Copy&lt;/strong&gt;&lt;br&gt;
Using the command line can sometimes feel like you are working in the dark. The ‘Working Copy’ section shows the difference between your local copy and the version in the Git repository. This gives you a ‘real-time’ view of your local files, so you can see exactly what you have changed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Branch History&lt;/strong&gt;&lt;br&gt;
A huge part of the SourceTree interface is History. This section displays the full history of the current branch. Each commit and file change is displayed and accessible, providing a very powerful tool for version control. This alone is a huge benefit for projects which are worked on regularly by multiple developers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;GitFlow&lt;/strong&gt;&lt;br&gt;
One feature I make use of is GitFlow. Having 6+ developers working on one set of code at once can get complicated. GitFlow adds a structured process to your workflow, which ensures that parallel code changes are completed without any hiccups, and it’s a two-click setup! I have seen a huge reduction in merge conflicts thanks to GitFlow.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;It’s Free&lt;/strong&gt;&lt;br&gt;
It doesn’t cost a thing to download or use SourceTree, great huh!?&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Installing SourceTree
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Go to the &lt;a href="https://sourcetreeapp.com" rel="noopener noreferrer"&gt;Sourcetree website&lt;/a&gt; and click the download button.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;From the ZIP file you download, click the application file (EXE for Windows or DMG for Mac) to download.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;After you install, you’ll have to agree to the Atlassian Customer Agreement and hit &lt;strong&gt;Continue&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;You need an Atlassian account to use Sourcetree. When you get to this screen, click either &lt;strong&gt;Use an existing account&lt;/strong&gt; or &lt;strong&gt;Go to My Atlassian&lt;/strong&gt; and follow the prompts to &lt;a href="https://id.atlassian.com/signup" rel="noopener noreferrer"&gt;create a new account&lt;/a&gt;. Once you’ve got an account, you’ll be able to log in with &lt;em&gt;Use an existing account&lt;/em&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%2Fblj0yzwel2h6im7hwsgd.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%2Fblj0yzwel2h6im7hwsgd.png" alt="Logging in to SourceTree" width="800" height="557"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If you want to connect to a remote hosting service, use the default options as you enter your Bitbucket or GitHub credentials. If you can’t continue without generating an SSH key, select &lt;strong&gt;HTTPS&lt;/strong&gt; to continue or see &lt;a href="https://confluence.atlassian.com/x/X4FmKw" rel="noopener noreferrer"&gt;Set up an SSH key&lt;/a&gt; for more details about setting up SSH with Sourcetree.&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%2Fud8gjd7bi1wsjwkdzsrg.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%2Fud8gjd7bi1wsjwkdzsrg.png" alt="Connecting extra accounts" width="800" height="557"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Follow the prompts until you’re done with the setup. If you aren’t ready to clone a repository, click &lt;strong&gt;Skip Setup&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Connecting to GitHub
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Firstly, &lt;a href="https://github.com/join" rel="noopener noreferrer"&gt;sign up&lt;/a&gt; on GitHub, if you already don’t have a GitHub account.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Switch to SourceTree. Click the gear icon and select &lt;strong&gt;Accounts&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%2Fuploads%2Farticles%2Fvy2mthvx3rmo0b0am0s3.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%2Fvy2mthvx3rmo0b0am0s3.png" alt="Add GitHub account" width="800" height="381"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click &lt;strong&gt;Add&lt;/strong&gt; from the &lt;strong&gt;Accounts&lt;/strong&gt; tab.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;After you select a &lt;strong&gt;GitHub&lt;/strong&gt; as Host, enter your hosting details. Keep the default &lt;strong&gt;Auth Type&lt;/strong&gt; and click &lt;strong&gt;Connect Account&lt;/strong&gt; to enter your credentials.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;When you enter your account details, you can choose whether you prefer to connect with HTTPS or SSH. Choose &lt;strong&gt;HTTPS&lt;/strong&gt; for now.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;An authentication window will open in your browser. Login with your GitHub Credentials and grant permission.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Hola…!!!&lt;/strong&gt; 🙌 Your Github account is logged into SourceTree and you are good to go.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Breakfast + Lunch + Dinner Commands
&lt;/h2&gt;

&lt;p&gt;These are the commands which are highly used in each and every project.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;git init &lt;code&gt;&amp;lt;directory&amp;gt;&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Create empty Git repo in the specified directory. Run with no arguments to initialize the current directory as a git repository&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;git add &lt;code&gt;&amp;lt;directory&amp;gt;&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Stage all changes in &lt;code&gt;&amp;lt;directory&amp;gt;&lt;/code&gt; for the next commit. Replace &lt;code&gt;&amp;lt;directory&amp;gt;&lt;/code&gt; with a &lt;code&gt;&amp;lt;file&amp;gt;&lt;/code&gt; to change a specific file.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;git commit -m "&lt;code&gt;&amp;lt;message&amp;gt;&lt;/code&gt;"&lt;/strong&gt;&lt;br&gt;
Commit the staged snapshot, but instead of launching a text editor, use  as the commit message.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;git push &lt;code&gt;&amp;lt;remote&amp;gt; &amp;lt;branch&amp;gt;&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Push the branch to &lt;code&gt;&amp;lt;remote&amp;gt;&lt;/code&gt;, along with necessary commits and objects. Creates named branch in the remote repo if it doesn’t exist.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;git pull &lt;code&gt;&amp;lt;remote&amp;gt;&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Fetch the specified remote’s copy of the current branch and immediately merge it into the local copy.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;git clone &lt;code&gt;&amp;lt;repo&amp;gt;&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Clone repo located at onto local machine. The original repo can be located on the local filesystem or on a remote machine via HTTP or SSH.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;git status&lt;/strong&gt;&lt;br&gt;
List which files are staged, unstaged, and untracked.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;git log&lt;/strong&gt;&lt;br&gt;
Display the entire commit history using the default format. For customization see additional options.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;git diff&lt;/strong&gt;&lt;br&gt;
Show unstaged changes between your index and working directory.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  PowerUser Tips
&lt;/h2&gt;

&lt;p&gt;Here are the tips to make the best use of Git with your projects.&lt;/p&gt;

&lt;h3&gt;
  
  
  Git CheatSheet is available &lt;a href="https://drive.google.com/viewerng/viewer?url=https://www.atlassian.com/dam/jcr:8132028b-024f-4b6b-953e-e68fcce0c5fa/atlassian-git-cheatsheet.pdf" rel="noopener noreferrer"&gt;HERE&lt;/a&gt;
&lt;/h3&gt;

&lt;h3&gt;
  
  
  SourceTree Shortcuts are available &lt;a href="https://kapeli.com/cheat_sheets/Sourcetree.docset/Contents/Resources/Documents/index" rel="noopener noreferrer"&gt;HERE&lt;/a&gt;
&lt;/h3&gt;

&lt;h3&gt;
  
  
  SourceTree Dark Mode
&lt;/h3&gt;

&lt;p&gt;Enable Dark Theme for SourceTree in &lt;strong&gt;Tools &amp;gt;&amp;gt; Options&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%2Fuploads%2Farticles%2Fvkt1ngwwmnskbpe3mi63.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%2Fvkt1ngwwmnskbpe3mi63.png" alt="SourceTree Dark Mode" width="800" height="712"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Push with Commit
&lt;/h3&gt;

&lt;p&gt;Tick the checkbox against &lt;strong&gt;'Push changes immediately...'&lt;/strong&gt; to make sure your changes are updated on the &lt;strong&gt;remote&lt;/strong&gt; repository as soon as you commit the change to the local copy of repository.&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%2Fh05dc809ywmb21kap95u.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%2Fh05dc809ywmb21kap95u.png" alt="Push with Commit" width="706" height="149"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  SourceTree QuickAccess Menu
&lt;/h3&gt;

&lt;p&gt;Use the QuickAccess menu to access frequently used features easily.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Terminal&lt;/strong&gt; to open Terminal directly at the repository directory&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Remote&lt;/strong&gt; to open the remote repository in the browser&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Explorer&lt;/strong&gt; to open the local repository in the File Explorer&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%2Fowic4lu2huxmqzpv69e1.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%2Fowic4lu2huxmqzpv69e1.png" alt="QuickAccess" width="379" height="90"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Faster Repository Search
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Press &lt;strong&gt;Ctrl + B&lt;/strong&gt; on your keyboard to toggle Bookmarks Sidebar.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Type your search query straight away.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Hit &lt;strong&gt;ENTER&lt;/strong&gt; to open the Working Copy of repo in &lt;strong&gt;SourceTree&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%2Fuploads%2Farticles%2Fbvbxmslgy7bbgvz6lcmx.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%2Fbvbxmslgy7bbgvz6lcmx.png" alt="Faster Repository Search" width="459" height="493"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔍 Read more of my Articles
&lt;/h2&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="/enappd" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__org__pic"&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%2Forganization%2Fprofile_image%2F970%2Fea2619fc-48a1-4b54-ba7f-0a40a2b5931f.png" alt="Enappd" width="512" height="512"&gt;
      &lt;div class="ltag__link__user__pic"&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%2Fuser%2Fprofile_image%2F192928%2Fbeb4c903-583c-4568-b859-5aa1d50b58f0.jpg" alt="" width="800" height="800"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/enappd/how-to-install-flutter-on-mac-windows-339" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;How to install Flutter on Mac &amp;amp; Windows&lt;/h2&gt;
      &lt;h3&gt;Shivam Goyal for Enappd ・ Sep 26 '19&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#flutter&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#google&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#mac&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#windows&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;



&lt;div class="ltag__link"&gt;
  &lt;a href="/shivamgoyal" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&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%2Fuser%2Fprofile_image%2F192928%2Fbeb4c903-583c-4568-b859-5aa1d50b58f0.jpg" alt="shivamgoyal"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/shivamgoyal/what-s-new-with-flutter-1-9-how-to-upgrade-to-the-latest-version-44ok" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;What’s new with Flutter 1.9 &amp;amp; how to upgrade to the latest version&lt;/h2&gt;
      &lt;h3&gt;Shivam Goyal ・ Sep 25 '19&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#flutter&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#dart&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#android&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#ios&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;





&lt;h2&gt;
  
  
  🎯 That’s all for today.
&lt;/h2&gt;

&lt;p&gt;If you got any queries hit me up in the comments or ping me over on &lt;a href="//mailto:hi@itsshivam.com"&gt;hi@itsshivam.com&lt;/a&gt; 📧&lt;/p&gt;

&lt;p&gt;If you learned even a thing or two, hit that ❤️ button as many times as you can to show your support! It really motivates me to contribute to the community.&lt;/p&gt;

&lt;p&gt;Feeling too generous? &lt;a href="https://www.paypal.me/shivamgoyal1899/" rel="noopener noreferrer"&gt;Buy me a Drink&lt;/a&gt; 🍺&lt;br&gt;
Wanna collaborate? &lt;a href="//mailto:hi@itsshivam.com"&gt;Let’s talk some tech&lt;/a&gt; 😄&lt;br&gt;
Stalk me over on &lt;a href="https://itsshivam.com" rel="noopener noreferrer"&gt;itsshivam.com&lt;/a&gt;, &lt;a href="https://github.com/ShivamGoyal1899" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;, or &lt;a href="https://linkedin.com/in/shivamgoyal1899/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;. 👀&lt;/p&gt;

</description>
      <category>git</category>
      <category>sourcetree</category>
      <category>github</category>
      <category>versioncontrol</category>
    </item>
    <item>
      <title>How to install Flutter on Mac &amp; Windows</title>
      <dc:creator>Shivam Goyal</dc:creator>
      <pubDate>Thu, 26 Sep 2019 09:40:41 +0000</pubDate>
      <link>https://dev.to/enappd/how-to-install-flutter-on-mac-windows-339</link>
      <guid>https://dev.to/enappd/how-to-install-flutter-on-mac-windows-339</guid>
      <description>
&lt;p&gt;In this post, we’ll have an overview of Flutter, the latest buzz in app development market. Flutter is gaining popularity faster than any other framework. Some say it is Google’s answer to Facebook’s React Native, but that debate is for later. Let’s learn the basics of Flutter and how to start using it.&lt;/p&gt;
&lt;h3&gt;What is Flutter?&lt;/h3&gt;
&lt;p&gt;&lt;span&gt;F&lt;/span&gt;lutter is Google’s portable UI toolkit for crafting high-quality native experiences for mobile, web and desktop in record time. Flutter works with existing code, is used by developers and organizations around the world, and is free and open source.&lt;/p&gt;
&lt;h3&gt;What does Flutter do?&lt;/h3&gt;
&lt;p&gt;For users, Flutter makes beautiful app UIs come to life.&lt;/p&gt;
&lt;p&gt;For developers, Flutter lowers the bar to entry for building mobile apps. It speeds up the development of mobile apps and reduces the cost and complexity of app production across iOS and Android.&lt;/p&gt;
&lt;p&gt;For designers, Flutter helps deliver the original design vision, without loss of fidelity or compromises. It also acts as a productive prototyping tool.&lt;/p&gt;
&lt;h3&gt;What technology is Flutter built with?&lt;/h3&gt;
&lt;p&gt;Flutter is built with C, C++, Dart, and Skia (a 2D rendering engine). See this &lt;a href="https://docs.google.com/presentation/d/1cw7A4HbvM_Abv320rVgPVGiUP2msVs7tfGbkgdrTy0I/edit#slide=id.gbb3c3233b_0_162" rel="noopener noreferrer"&gt;architecture diagram&lt;/a&gt; for a better picture of the main components.&lt;/p&gt;
&lt;h3&gt;Why use Flutter?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Develop for iOS and Android from a single codebase&lt;/li&gt;
&lt;li&gt;Do more with less code, even on a single OS, with a modern, expressive language and a declarative approach&lt;/li&gt;
&lt;li&gt;Experiment by changing code and reloading as your app runs (with hot reload)&lt;/li&gt;
&lt;li&gt;Fix crashes and continue debugging from where the app left off&lt;/li&gt;
&lt;li&gt;Benefit from a rich set of Material Design and Cupertino (iOS-flavor) widgets built using Flutter’s own framework&lt;/li&gt;
&lt;li&gt;Realize custom, beautiful, brand-driven designs, without the limitations of OEM widget sets&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;How to Install Flutter on Windows?&lt;/h3&gt;
&lt;h4&gt;Minimum System Requirements&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Operating Systems:&lt;/strong&gt; Windows 7 or later [64-bit]&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Disk Space:&lt;/strong&gt; 400 MB&lt;/li&gt;
&lt;li&gt;&lt;a href="https://git-scm.com/download/win" rel="noopener noreferrer"&gt;&lt;strong&gt;Git for Windows&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Get the Flutter SDK&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;Download Latest Flutter SDK &lt;a href="https://flutter.dev/docs/development/tools/sdk/releases?tab=windows" rel="noopener noreferrer"&gt;HERE&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Unzip the downloaded zip in &lt;code&gt;C:\flutter&lt;/code&gt; .&lt;/li&gt;
&lt;li&gt;Locate &lt;code&gt;flutter_console.bat&lt;/code&gt; inside the &lt;code&gt;flutter&lt;/code&gt; directory and start it by double-clicking.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;Update your path&lt;/h4&gt;
&lt;p&gt;If you wish to run Flutter commands in the regular Windows console, take these steps to add Flutter to the &lt;code&gt;PATH&lt;/code&gt;environment variable:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;From the Start search bar, type ‘env’ and select &lt;strong&gt;Edit environment variables for your account&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Under &lt;strong&gt;User variables&lt;/strong&gt; check if there is an entry called &lt;strong&gt;Path&lt;/strong&gt;:&lt;/li&gt;
&lt;li&gt;If the entry does exist, append the full path to &lt;code&gt;flutter\bin&lt;/code&gt; using &lt;code&gt;;&lt;/code&gt; as a separator from existing values.&lt;/li&gt;
&lt;li&gt;If the entry does not exist, create a new user variable named &lt;code&gt;Path&lt;/code&gt; with the full path to &lt;code&gt;flutter\bin&lt;/code&gt; as its value.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;Note that you will have to close and reopen any existing console windows for these changes to take effect.&lt;/blockquote&gt;
&lt;h4&gt;Run flutter doctor&lt;/h4&gt;
&lt;p&gt;From a console window which has the Flutter directory in the path (see above), run the following command to see if there are any platform dependencies you need to complete the setup:&lt;/p&gt;
&lt;pre&gt;C:\flutter&amp;gt;flutter doctor&lt;/pre&gt;
&lt;p&gt;This command checks your environment and displays a report of the status of your Flutter installation. Check the output carefully for other software you may need to install or further tasks to perform (shown in &lt;strong&gt;bold&lt;/strong&gt; text).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;For example:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;strong&gt;[-]&lt;/strong&gt; Android toolchain - develop for Android devices&lt;br&gt;    • Android SDK at C:\Android\sdk&lt;br&gt;    &lt;strong&gt;✗ Android SDK is missing command line tools; download from &lt;/strong&gt;&lt;a href="https://goo.gl/XxQghQ" rel="noopener noreferrer"&gt;&lt;strong&gt;&lt;a href="https://goo.gl/XxQghQ" rel="noopener noreferrer"&gt;https://goo.gl/XxQghQ&lt;/a&gt;&lt;/strong&gt;&lt;/a&gt;&lt;br&gt;    • Try re-installing or updating your Android SDK,&lt;br&gt;     visit &lt;a href="https://flutter.dev/setup/#android-setup" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;a href="https://flutter.dev/setup/#android-setup" rel="noopener noreferrer"&gt;https://flutter.dev/setup/#android-setup&lt;/a&gt; for detailed instructions.&lt;/pre&gt;
&lt;h3&gt;Android Setup&lt;/h3&gt;
&lt;blockquote&gt;Flutter relies on a full installation of Android Studio to supply its Android platform dependencies. However, you can write your Flutter apps in a number of editors.&lt;/blockquote&gt;
&lt;h4&gt;Install Android Studio&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;Download and install &lt;a href="https://developer.android.com/studio" rel="noopener noreferrer"&gt;Android Studio&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Start Android Studio, and go through the ‘&lt;strong&gt;Android Studio Setup Wizard&lt;/strong&gt;’. This installs the latest Android SDK, Android SDK Platform-Tools, and Android SDK Build-Tools, which are required by Flutter when developing for Android.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;Set up your Android device&lt;/h4&gt;
&lt;p&gt;To prepare to run and test your Flutter app on an Android device, you’ll need an Android device running Android 4.1 (API level 16) or higher.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Enable &lt;strong&gt;Developer options&lt;/strong&gt; and &lt;strong&gt;USB debugging&lt;/strong&gt; on your device. Detailed instructions are available in the &lt;a href="https://developer.android.com/studio/debug/dev-options" rel="noopener noreferrer"&gt;Android documentation&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Windows-only: Install the &lt;a href="https://developer.android.com/studio/run/win-usb" rel="noopener noreferrer"&gt;Google USB Driver&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Using a USB cable, plug your phone into your computer. If prompted on your device, authorize your computer to access your device.&lt;/li&gt;
&lt;li&gt;In the terminal, run the &lt;code&gt;flutter devices&lt;/code&gt; command to verify that Flutter recognizes your connected Android device.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;By default, Flutter uses the version of the Android SDK where your &lt;code&gt;adb&lt;/code&gt; tool is based. If you want Flutter to use a different installation of the Android SDK, you must set the &lt;code&gt;ANDROID_HOME&lt;/code&gt; environment variable to that installation directory.&lt;/p&gt;
&lt;h4&gt;Install the Flutter and Dart plugins&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;Start Android Studio.&lt;/li&gt;
&lt;li&gt;Open plugin preferences (&lt;strong&gt;File &amp;gt; Settings &amp;gt; Plugins&lt;/strong&gt;).&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Browse repositories&lt;/strong&gt;, select the Flutter plugin and click &lt;strong&gt;Install&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Yes&lt;/strong&gt; when prompted to install the Dart plugin.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Restart&lt;/strong&gt; when prompted.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;How to Install Flutter on MacOS?&lt;/h3&gt;
&lt;h4&gt;Minimum System Requirements&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Operating Systems&lt;/strong&gt;: macOS [64-bit]&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Disk Space&lt;/strong&gt;: 700 MB&lt;/li&gt;
&lt;li&gt;&lt;a href="https://git-scm.com/download/mac" rel="noopener noreferrer"&gt;&lt;strong&gt;Git for macOS&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Get the Flutter SDK&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Download Latest Flutter SDK &lt;a href="https://flutter.dev/docs/development/tools/sdk/releases?tab=macos" rel="noopener noreferrer"&gt;HERE&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Extract the file in the desired location e.g.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;&lt;strong&gt;$&lt;/strong&gt; cd ~/development&lt;br&gt;&lt;strong&gt;$&lt;/strong&gt; unzip ~/Downloads/flutter_macos_v1.5.4-hotfix.2-stable.zip&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;&lt;li&gt;Add the &lt;code&gt;flutter&lt;/code&gt; tool to your path. To do this, open your bash profile from your terminal (might need sudo)&lt;/li&gt;&lt;/ul&gt;
&lt;pre&gt;&lt;strong&gt;$&lt;/strong&gt; sudo vim ~/.bash_profile&lt;/pre&gt;
&lt;p&gt;Add your flutter path to the &lt;code&gt;$PATH&lt;/code&gt; variable in bash_profile.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;E.g.&lt;/strong&gt; If you extracted flutter in your &lt;code&gt;Applications&lt;/code&gt; folder, your path will be &lt;code&gt;/Applications/flutter/bin&lt;/code&gt; . Add this to the existing &lt;code&gt;$PATH&lt;/code&gt; variable by using &lt;code&gt;:&lt;/code&gt; in between two paths. Once added, save and close the &lt;code&gt;bash_profile&lt;/code&gt; . Run terminal again and check the &lt;code&gt;$PATH&lt;/code&gt; by running&lt;/p&gt;
&lt;pre&gt;&lt;strong&gt;$&lt;/strong&gt; echo $PATH&lt;/pre&gt;
&lt;p&gt;You should see your Flutter path added to the &lt;code&gt;$PATH&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Run &lt;code&gt;flutter precache&lt;/code&gt; in the terminal.&lt;/li&gt;&lt;/ul&gt;
&lt;h4&gt;Run flutter doctor&lt;/h4&gt;
&lt;p&gt;Run the following command to see if there are any dependencies you need to install to complete the setup (for verbose output, add the &lt;code&gt;-v&lt;/code&gt; flag):&lt;/p&gt;
&lt;pre&gt;&lt;strong&gt;$&lt;/strong&gt; flutter doctor&lt;/pre&gt;
&lt;p&gt;This command checks your environment and displays a report to the terminal window. The Dart SDK is bundled with Flutter; it is not necessary to install Dart separately. Check the output carefully for other software you may need to install or further tasks to perform (shown in &lt;strong&gt;bold&lt;/strong&gt; text).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;For example: &lt;/strong&gt;If you haven’t used Flutter before, you might see an output like this by running &lt;code&gt;flutter doctor&lt;/code&gt;&lt;/p&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Zr_Pq8_Z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/800/1%2AmMa1SyYE6dzpZyYFg9xqgw.png" width="569" height="380"&gt;&lt;br&gt;Flutter doctor output on a fresh system&lt;p&gt;You can see there are several things to be done to begin using Flutter in this Mac. To correct these issues, let’s run following commands&lt;/p&gt;
&lt;h4&gt;&lt;strong&gt;Fix license issue in Android studio&lt;/strong&gt;&lt;/h4&gt;
&lt;pre&gt;&lt;strong&gt;$&lt;/strong&gt; flutter doctor --android-licenses&lt;/pre&gt;
&lt;h4&gt;&lt;strong&gt;Fix iOS toolchain issues&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;( Install Xcode command line tools if you are on Mac OS Mojave)&lt;/p&gt;
&lt;pre&gt;&lt;strong&gt;$&lt;/strong&gt; brew update&lt;/pre&gt;
&lt;pre&gt;&lt;strong&gt;$&lt;/strong&gt; brew install --HEAD usbmuxd&lt;/pre&gt;
&lt;pre&gt;&lt;strong&gt;$&lt;/strong&gt; brew link usbmuxd&lt;/pre&gt;
&lt;pre&gt;&lt;strong&gt;$&lt;/strong&gt; brew install --HEAD libimobiledevice&lt;/pre&gt;
&lt;pre&gt;&lt;strong&gt;$&lt;/strong&gt; brew install ideviceinstaller&lt;/pre&gt;
&lt;h4&gt;&lt;strong&gt;Update iOS-deploy&lt;/strong&gt;&lt;/h4&gt;
&lt;pre&gt;&lt;strong&gt;$&lt;/strong&gt; npm install -g ios-deploy&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;brew&lt;/code&gt; does not maintain it any longer, as &lt;code&gt;flutter doctor&lt;/code&gt; suggests&lt;/p&gt;
&lt;h4&gt;&lt;strong&gt;Android Studio — Install Flutter and Dart plugins&lt;/strong&gt;&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;Start Android Studio.&lt;/li&gt;
&lt;li&gt;Open plugin preferences (&lt;strong&gt;Preferences &amp;gt; Plugins&lt;/strong&gt; on macOS, &lt;strong&gt;File &amp;gt; Settings &amp;gt; Plugins&lt;/strong&gt; on Windows).&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Browse repositories&lt;/strong&gt;, select the Flutter plugin and click &lt;strong&gt;Install&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Yes&lt;/strong&gt; when prompted to install the Dart plugin.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Restart&lt;/strong&gt; when prompted.&lt;/li&gt;
&lt;/ol&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YU5O6z-V--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/800/1%2AapscZjX_Y-FyRwrnCY8U0w.png" width="800" height="500"&gt;&lt;br&gt;Install Flutter and Dart plugin in Android Studio&lt;h4&gt;&lt;strong&gt;Install VSCode Flutter Extension&lt;/strong&gt;&lt;/h4&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HRfZW9gO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/800/1%2A0nC0NDrHEbqZBbPbvIP2SQ.png" width="751" height="173"&gt;&lt;p&gt;Now all issues should be gone&lt;/p&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ERkEGd62--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/800/1%2AAqXzbpB1oyD5Y0YRgHoZSQ.png" width="617" height="135"&gt;&lt;br&gt;We are GO flight!&lt;h3&gt;iOS Setup&lt;/h3&gt;
&lt;h4&gt;Install Xcode&lt;/h4&gt;
&lt;p&gt;To develop Flutter apps for iOS, you need a Mac with Xcode 9.0 or newer:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Install Xcode 9.0 or newer (via &lt;a href="https://developer.apple.com/xcode/" rel="noopener noreferrer"&gt;web download&lt;/a&gt; or the &lt;a href="https://itunes.apple.com/us/app/xcode/id497799835" rel="noopener noreferrer"&gt;Mac App Store&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;Configure the Xcode command-line tools to use the newly-installed version of Xcode by running the following from the command line:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;&lt;strong&gt;$&lt;/strong&gt; sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;This is the correct path for most cases, when you want to use the latest version of Xcode. If you need to use a different version, specify that path instead.&lt;/li&gt;
&lt;li&gt;Make sure the Xcode license agreement is signed by either opening Xcode once and confirming or running &lt;code&gt;sudo xcodebuild -license&lt;/code&gt; from the command line.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;With Xcode, you’ll be able to run Flutter apps on an iOS device or on the simulator.&lt;/p&gt;
&lt;h4&gt;Set up the iOS simulator&lt;/h4&gt;
&lt;p&gt;To prepare to run and test your Flutter app on the iOS simulator, follow these steps:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;On your Mac, find the Simulator via Spotlight or by using the following command:&lt;/li&gt;&lt;/ul&gt;
&lt;pre&gt;&lt;strong&gt;$ &lt;/strong&gt;&lt;code&gt;open -a Simulator&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;Make sure your simulator is using a 64-bit device (iPhone 5s or later) by checking the settings in the simulator’s &lt;strong&gt;Hardware &amp;gt; Device&lt;/strong&gt; menu.&lt;/li&gt;
&lt;li&gt;Depending on your development machine’s screen size, simulated high-screen-density iOS devices may overflow your screen. Set the device scale under the &lt;strong&gt;Window &amp;gt; Scale&lt;/strong&gt; menu in the simulator.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Create and run a simple Flutter app&lt;/h4&gt;
&lt;p&gt;To create your first Flutter app and test your setup, follow these steps:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Create a new Flutter app by running the following from the command line:&lt;/li&gt;&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;&lt;strong&gt;$ &lt;/strong&gt;flutter create my_app&lt;/code&gt;&lt;/pre&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0yC3dbBQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/800/1%2AQQe_XMnoAw0FPzrNAi4C7A.png" width="764" height="248"&gt;&lt;br&gt;A successful creation will show something like this&lt;p&gt;A &lt;code&gt;my_app&lt;/code&gt; directory is created, containing Flutter’s starter app.&lt;/p&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--b2OFMHAX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/800/1%2AY5iYl7EnP7DINNUJG9ULXw.png" width="491" height="253"&gt;&lt;br&gt;Flutter app directory&lt;p&gt;CD into this directory:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;strong&gt;$ &lt;/strong&gt;cd my_app&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To launch the app in the Simulator, ensure that the Simulator is running and enter:&lt;/p&gt;
&lt;pre&gt;&lt;strong&gt;$&lt;/strong&gt;&lt;code&gt; flutter run&lt;/code&gt;&lt;/pre&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--AXAwUyVi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://cdn-images-1.medium.com/max/800/1%2Ajz38rMbRI2p8lVRyaUKMqQ.gif" width="350" height="619"&gt;&lt;br&gt;Your first Flutter iOS app is running in Simulator !! 👻&lt;h4&gt;Deploy to iOS devices&lt;/h4&gt;
&lt;p&gt;To deploy your Flutter app to a physical iOS device, you’ll need some additional tools and an Apple account. You’ll also need to set up physical device deployment in Xcode.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Install &lt;a href="https://brew.sh/" rel="noopener noreferrer"&gt;homebrew&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Ensure that homebrew is up to date:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;strong&gt;$&lt;/strong&gt; brew update&lt;/pre&gt;
&lt;ul&gt;&lt;li&gt;Install the tools for deploying Flutter apps to iOS devices by running the following commands:&lt;/li&gt;&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;&lt;strong&gt;$&lt;/strong&gt; brew install --HEAD usbmuxd&lt;br&gt;&lt;strong&gt;$&lt;/strong&gt; brew link usbmuxd&lt;br&gt;&lt;strong&gt;$&lt;/strong&gt; brew install --HEAD libimobiledevice&lt;br&gt;&lt;strong&gt;$&lt;/strong&gt; brew install ideviceinstaller ios-deploy cocoapods&lt;br&gt;&lt;strong&gt;$&lt;/strong&gt; pod setup&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Android setup&lt;/h3&gt;
&lt;blockquote&gt;Flutter relies on a full installation of Android Studio to supply its Android platform dependencies. However, you can write your Flutter apps in a number of editors; a later step will discuss that.&lt;/blockquote&gt;
&lt;h4&gt;Install Android Studio&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;Download and install &lt;a href="https://developer.android.com/studio" rel="noopener noreferrer"&gt;Android Studio&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Start Android Studio, and go through the ‘&lt;strong&gt;Android Studio Setup Wizard&lt;/strong&gt;’. This installs the latest Android SDK, Android SDK Platform-Tools, and Android SDK Build-Tools, which are required by Flutter when developing for Android.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;Set up your Android device&lt;/h4&gt;
&lt;p&gt;To prepare to run and test your Flutter app on an Android device, you’ll need an Android device running Android 4.1 (API level 16) or higher.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Enable &lt;strong&gt;Developer Options&lt;/strong&gt; and &lt;strong&gt;USB debugging&lt;/strong&gt; on your device. Detailed instructions are available in the &lt;a href="https://developer.android.com/studio/debug/dev-options" rel="noopener noreferrer"&gt;Android documentation&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Windows-only: Install the &lt;a href="https://developer.android.com/studio/run/win-usb" rel="noopener noreferrer"&gt;Google USB Driver&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Using a USB cable, plug your phone into your computer. If prompted on your device, authorize your computer to access your device.&lt;/li&gt;
&lt;li&gt;In the terminal, run the &lt;code&gt;flutter devices&lt;/code&gt; command to verify that Flutter recognizes your connected Android device.&lt;/li&gt;
&lt;li&gt;Once ready, run &lt;code&gt;flutter run&lt;/code&gt; again to run the app on Android device 😎&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;By default, Flutter uses the version of the Android SDK where your &lt;code&gt;adb&lt;/code&gt; tool is based. If you want Flutter to use a different installation of the Android SDK, you must set the &lt;code&gt;ANDROID_HOME&lt;/code&gt; environment variable to that installation directory.&lt;/p&gt;
&lt;h3&gt;Set up the Android emulator&lt;/h3&gt;
&lt;p&gt;To prepare to run and test your Flutter app on the Android emulator, follow these steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Enable &lt;a href="https://developer.android.com/studio/run/emulator-acceleration" rel="noopener noreferrer"&gt;VM acceleration&lt;/a&gt; on your machine.&lt;/li&gt;
&lt;li&gt;Launch &lt;strong&gt;Android Studio &amp;gt; Tools &amp;gt; Android &amp;gt; AVD Manager&lt;/strong&gt; and select &lt;strong&gt;Create Virtual Device&lt;/strong&gt;. (The &lt;strong&gt;Android&lt;/strong&gt; submenu is only present when inside an Android project.)&lt;/li&gt;
&lt;li&gt;Choose a device definition and select &lt;strong&gt;Next&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Select one or more system images for the Android versions you want to emulate, and select &lt;strong&gt;Next&lt;/strong&gt;. An &lt;em&gt;x86&lt;/em&gt; or &lt;em&gt;x86_64&lt;/em&gt;image is recommended.&lt;/li&gt;
&lt;li&gt;Under Emulated Performance, select &lt;strong&gt;Hardware — GLES 2.0&lt;/strong&gt; to enable &lt;a href="https://developer.android.com/studio/run/emulator-acceleration" rel="noopener noreferrer"&gt;hardware acceleration&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Verify the AVD configuration is correct, and select &lt;strong&gt;Finish&lt;/strong&gt;. For details on the above steps, see &lt;a href="https://developer.android.com/studio/run/managing-avds" rel="noopener noreferrer"&gt;Managing AVDs&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;In Android Virtual Device Manager, click &lt;strong&gt;Run&lt;/strong&gt; in the toolbar. The emulator starts up and displays the default canvas for your selected OS version and device.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;More resources for Flutter&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://flutter.dev/docs" rel="noopener noreferrer"&gt;Flutter Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Build Native Mobile Apps with Flutter | &lt;a href="https://www.udacity.com/course/build-native-mobile-apps-with-flutter--ud905" rel="noopener noreferrer"&gt;Udacity&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://flutter.dev/community" rel="noopener noreferrer"&gt;Flutter Community&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/flutterdev" rel="noopener noreferrer"&gt;Flutter YouTube Channel&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://flutter.dev/docs/cookbook" rel="noopener noreferrer"&gt;Flutter Cookbook&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;My GitHub Profile &lt;a href="https://github.com/ShivamGoyal1899" rel="noopener noreferrer"&gt;@ShivamGoyal1899&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;YaY..!! 👻 You’re almost done. Now, you are ready to design beautiful Android and iOS Apps with Flutter.&lt;/p&gt;

</description>
      <category>flutter</category>
      <category>google</category>
      <category>mac</category>
      <category>windows</category>
    </item>
    <item>
      <title>What’s new with Flutter 1.9 &amp; how to upgrade to the latest version</title>
      <dc:creator>Shivam Goyal</dc:creator>
      <pubDate>Wed, 25 Sep 2019 22:19:45 +0000</pubDate>
      <link>https://dev.to/shivamgoyal/what-s-new-with-flutter-1-9-how-to-upgrade-to-the-latest-version-44ok</link>
      <guid>https://dev.to/shivamgoyal/what-s-new-with-flutter-1-9-how-to-upgrade-to-the-latest-version-44ok</guid>
      <description>&lt;p&gt;Flutter has got a new &amp;amp; improved version of itself in it’s September release. The release is available now in the stable channel for users to upgrade. The new features and updates span a wide range, from support for macOS Catalina and iOS 13 to improved tooling support, as well as new Dart language features and new Material widgets.&lt;/p&gt;

&lt;h1&gt;
  
  
  Upgrading to Flutter 1.9
&lt;/h1&gt;

&lt;p&gt;If you already have Flutter on your system and you’re on the default stable channel, you can upgrade to version 1.9 by running &lt;code&gt;flutter upgrade&lt;/code&gt; from the command line.&lt;/p&gt;

&lt;p&gt;If you want to freshly install Flutter on your system, this is the place for you:&lt;/p&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="/enappd" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__org__pic"&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%2Forganization%2Fprofile_image%2F970%2Fea2619fc-48a1-4b54-ba7f-0a40a2b5931f.png" alt="Enappd" width="512" height="512"&gt;
      &lt;div class="ltag__link__user__pic"&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%2Fuser%2Fprofile_image%2F192928%2Fbeb4c903-583c-4568-b859-5aa1d50b58f0.jpg" alt="" width="800" height="800"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/enappd/how-to-install-flutter-on-mac-windows-339" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;How to install Flutter on Mac &amp;amp; Windows&lt;/h2&gt;
      &lt;h3&gt;Shivam Goyal for Enappd ・ Sep 26 '19&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#flutter&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#google&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#mac&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#windows&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;





&lt;h1&gt;
  
  
  New Features &amp;amp; Upgrades
&lt;/h1&gt;

&lt;h2&gt;
  
  
  New widgets and framework enhancements
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;ToggleButtons&lt;/strong&gt;&lt;br&gt;
The &lt;code&gt;ToggleButtons&lt;/code&gt; widget bundles a row of &lt;code&gt;ToggleButton&lt;/code&gt; widgets together, often composed of a set of &lt;code&gt;Icon&lt;/code&gt; and &lt;code&gt;Text&lt;/code&gt; widgets, to form a set of buttons with fully customizable look and behavior. Do you want a single selection or multi-select? Do you want to require at least one selection or allow none? Do you want a square or rounded edges, thick or thin borders, icons or text, etc? You can see some of these options below.&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%2F4f4fqsr7m7fl4gh77v0c.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%2Fuploads%2Farticles%2F4f4fqsr7m7fl4gh77v0c.gif" alt="ToggleButtons" width="216" height="480"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;ColorFiltered&lt;/strong&gt;&lt;br&gt;
As shown in the image below, the &lt;code&gt;ColorFiltered&lt;/code&gt; widget allows you to recolor a tree of child widgets just like you can recolor an image using one of several different algorithms (some of which are shown in the example screenshot above). This has many uses, for example, handling color blindness accessibility issues for your users.&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%2Fg7p5gouaqmlkt9yowziq.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%2Fuploads%2Farticles%2Fg7p5gouaqmlkt9yowziq.gif" alt="ColorFiltered" width="216" height="480"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Worldwide language support
&lt;/h2&gt;

&lt;p&gt;Google has also added support for 24 new languages, out of which 7 are Indian languages.&lt;/p&gt;

&lt;p&gt;Languages that are added include:&lt;br&gt;
&lt;em&gt;Afrikaans | Amharic | Assamese | Azerbaijani | Belarusian | Bengali | Basque | Gujarati | Icelandic | Georgian | Kannada | Kirghiz | Lao | Macedonian | Burmese | Nepali | Oriya | Punjabi | Sinhalese | Telugu | Uzbek | Zulu&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Dart 2.5 release
&lt;/h2&gt;

&lt;p&gt;The end-to-end developer experience depends not just on the features of Flutter but also on the underlying language itself. As part of the Flutter 1.9 release, Google is also releasing Dart 2.5. Dart 2.5 includes a pre-release of Foreign Function Interface (FFI) support, providing native extensions so Dart can call directly into code written in C. It also introduces machine learning-powered code completions for the IDE. You can learn about both of these and more in the &lt;a href="https://medium.com/dartlang/announcing-dart-2-5-super-charged-development-328822024970" rel="noopener noreferrer"&gt;Dart 2.5 announcement&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  Support for macOS Catalina and iOS 13
&lt;/h2&gt;

&lt;p&gt;As Apple prepares to release Catalina, the latest version of macOS, Google has worked hard to make sure that Flutter is ready for you to upgrade. Google has updated the end-to-end tooling experience to ensure it works well on Catalina and with Xcode 11. This includes adding support for the new Xcode build system, enabling 64-bit support throughout the toolchain, and simplifying platform dependencies.&lt;/p&gt;

&lt;p&gt;With iOS 13 on the way, Google has also been working to ensure your Flutter apps look great on the latest iPhone release. Flutter 1.9 includes an implementation of the iOS 13 draggable toolbar, with both long-press and drag-from-right, and supports vibration feedback. Work on iOS dark mode is also well underway with a number of pull requests already merged.&lt;/p&gt;

&lt;p&gt;Finally, in the latest development builds, you can now turn on experimental support for Bitcode, which is Apple’s platform-independent intermediate representation of a compiled program. Submitting your app as Bitcode allows Apple to optimize your binary in the future without resubmission, and opens the door to Flutter potentially supporting platforms like watchOS and tvOS that require Bitcode for app submission.&lt;/p&gt;
&lt;h2&gt;
  
  
  Toolchain improvements
&lt;/h2&gt;

&lt;p&gt;With this release, new projects default to Swift instead of Objective-C and Kotlin instead of Java for iOS and Android projects respectively. Since many packages are written with Swift, making it the default language removes manual work for adding those packages to an app created with the default options. Swift 5 is ABI stable, and thanks to app thinning work Apple has done in recent releases, the Swift dynamic libraries no longer need to be included in the distribution package for iOS 12.2 or greater, reducing the size of Swift applications compared to previous releases.&lt;/p&gt;

&lt;p&gt;And as Kotlin is now the default language for new projects in Android Studio, it seems natural to make the language switch for Android also. These options are now the default for both the &lt;code&gt;flutter&lt;/code&gt; CLI tool and the IntelliJ/Android Studio and VS Code plugins for Flutter, but you can always switch back to Objective-C or Java if you prefer.&lt;/p&gt;
&lt;h2&gt;
  
  
  Error Message Beautification
&lt;/h2&gt;

&lt;p&gt;Google has been working to improve Flutter’s error messages by making them more readable, more concise and more actionable.&lt;/p&gt;

&lt;p&gt;In the latest release of the Flutter plugin for IntelliJ/Android Studio and the extension for VS Code, Google shipped a new feature that displays error messages in a rich, yet concise, format. The logging console can now display error messages with the following improvements:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Highlighting the summary of the error in red&lt;/li&gt;
&lt;li&gt;Adding whitespace between sections to make the message more scannable&lt;/li&gt;
&lt;li&gt;Calling out the hint in the message, if available, for resolving the error&lt;/li&gt;
&lt;li&gt;Collapsing long lists and trees in the message&lt;/li&gt;
&lt;/ol&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%2Fwh9d29gtf7xgegz4754s.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%2Fwh9d29gtf7xgegz4754s.png" alt="Error Message Beautification" width="800" height="433"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Flutter web is stable
&lt;/h2&gt;

&lt;p&gt;And finally, the &lt;strong&gt;flutter_web repository&lt;/strong&gt; is deprecated now the web support has been merged into the &lt;strong&gt;main flutter repository!&lt;/strong&gt; What this means is that if you have the latest builds of Flutter from the master or dev channel, you can target the web with the latest experimental version of Flutter by running &lt;code&gt;flutter run -d chrome&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;When you create a project, Flutter now creates a web runner via a minimal &lt;code&gt;web/index.html&lt;/code&gt; file that bootstraps your web-compiled Flutter code. With that file in place, you can use the Flutter CLI tool or the IDE plugins to edit and run Flutter apps on the web.&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%2Fcin5yyffocjmfyvqjok0.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%2Fcin5yyffocjmfyvqjok0.png" alt="Flutter Web in VS Code" width="800" height="313"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Above is a screenshot of VS Code with web support enabled for Flutter. Notice the &lt;code&gt;web/index.html&lt;/code&gt; file, along with the dropdown list allowing you to choose Chrome as your target development device. Support for web output with Flutter is still at an early phase, but this release represents a major step forward towards enabling production support for web development with Flutter.&lt;/p&gt;
&lt;h3&gt;
  
  
  Some major Flutter Web Applications are:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://flutter-widget-livebook.blankapp.org/" rel="noopener noreferrer"&gt;Flutter Widget Livebook&lt;/a&gt; is built with Flutter for web and shows Flutter widgets running live in your browser.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://rxlabz.github.io/panache_web/" rel="noopener noreferrer"&gt;Panache&lt;/a&gt; is a tool for creating themes for Flutter which you can then download and drop directly into your code.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Over 1500 PRs merged on Github
&lt;/h2&gt;

&lt;p&gt;This release is Flutter’s biggest update yet with more than 1,500 PRs from more than 100 contributors in the two months since their last stable release in July.&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%2Fhp0kqlxinjdeqo5kp4ty.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%2Fuploads%2Farticles%2Fhp0kqlxinjdeqo5kp4ty.gif" alt="WoW via GIPHY" width="400" height="226"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  🔍 Read more of my Articles
&lt;/h2&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="/enappd" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__org__pic"&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%2Forganization%2Fprofile_image%2F970%2Fea2619fc-48a1-4b54-ba7f-0a40a2b5931f.png" alt="Enappd" width="512" height="512"&gt;
      &lt;div class="ltag__link__user__pic"&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%2Fuser%2Fprofile_image%2F192928%2Fbeb4c903-583c-4568-b859-5aa1d50b58f0.jpg" alt="" width="800" height="800"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/enappd/how-to-install-flutter-on-mac-windows-339" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;How to install Flutter on Mac &amp;amp; Windows&lt;/h2&gt;
      &lt;h3&gt;Shivam Goyal for Enappd ・ Sep 26 '19&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#flutter&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#google&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#mac&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#windows&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;



&lt;div class="ltag__link"&gt;
  &lt;a href="/gh-campus-experts" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__org__pic"&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%2Forganization%2Fprofile_image%2F2260%2F65bee150-aada-4390-852b-b4e450aec75b.png" alt="GitHub Campus Experts" width="800" height="800"&gt;
      &lt;div class="ltag__link__user__pic"&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%2Fuser%2Fprofile_image%2F192928%2Fbeb4c903-583c-4568-b859-5aa1d50b58f0.jpg" alt="" width="800" height="800"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/gh-campus-experts/understanding-version-control-systems-github-simplified-with-sourcetree-4n50" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Understanding Version Control Systems: GitHub Simplified with SourceTree&lt;/h2&gt;
      &lt;h3&gt;Shivam Goyal for GitHub Campus Experts ・ Sep 27 '19&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#git&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#sourcetree&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#github&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#versioncontrol&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;





&lt;h2&gt;
  
  
  🎯 That’s all for today.
&lt;/h2&gt;

&lt;p&gt;If you got any queries hit me up in the comments or ping me over on &lt;a href="//mailto:hi@shivamgoyal.co"&gt;hi@shivamgoyal.co&lt;/a&gt; 📧&lt;/p&gt;

&lt;p&gt;If you learned even a thing or two, hit that ❤️ button as many times as you can to show your support! It really motivates me to contribute to the community.&lt;/p&gt;

&lt;p&gt;Feeling too generous? &lt;a href="https://www.paypal.me/shivamgoyal1899/" rel="noopener noreferrer"&gt;Buy me a Drink&lt;/a&gt; 🍺&lt;br&gt;
Wanna collaborate? &lt;a href="//mailto:hi@shivamgoyal.co"&gt;Let’s talk some tech&lt;/a&gt; 😄&lt;br&gt;
Stalk me over on &lt;a href="https://shivamgoyal.co" rel="noopener noreferrer"&gt;shivamgoyal.co&lt;/a&gt;, &lt;a href="https://github.com/ShivamGoyal1899" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;, or &lt;a href="https://linkedin.com/in/shivamgoyal1899/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;. 👀&lt;/p&gt;

</description>
      <category>flutter</category>
      <category>dart</category>
      <category>android</category>
      <category>ios</category>
    </item>
  </channel>
</rss>
