<?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: Marcos Sevilla</title>
    <description>The latest articles on DEV Community by Marcos Sevilla (@marcossevilla).</description>
    <link>https://dev.to/marcossevilla</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%2F44781%2F842fba6d-ccb0-46f1-bfc7-1bdb53b8718d.jpg</url>
      <title>DEV Community: Marcos Sevilla</title>
      <link>https://dev.to/marcossevilla</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/marcossevilla"/>
    <language>en</language>
    <item>
      <title>Cleaner Flutter Vol. 8: Implementing contracts</title>
      <dc:creator>Marcos Sevilla</dc:creator>
      <pubDate>Wed, 12 May 2021 21:48:43 +0000</pubDate>
      <link>https://dev.to/marcossevilla/cleaner-flutter-vol-8-implementing-contracts-2644</link>
      <guid>https://dev.to/marcossevilla/cleaner-flutter-vol-8-implementing-contracts-2644</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;⚠️ This article was deprecated. ⚠️&lt;/p&gt;

&lt;p&gt;Check out the updated full article on my personal &lt;a href="https://marcossevilla.dev/cleaner-flutter-vol-8" rel="noopener noreferrer"&gt;blog&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You can find even more and keep in contact with me on my socials:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/marcossevilla" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.linkedin.com/in/marcossevilla" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.twitch.tv/noscopedevs" rel="noopener noreferrer"&gt;Twitch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/MarcosJSevilla" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/noscopedevs" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>dart</category>
      <category>flutter</category>
      <category>clean</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Cleaner Flutter Vol. 7: Where the data comes from</title>
      <dc:creator>Marcos Sevilla</dc:creator>
      <pubDate>Wed, 12 May 2021 21:48:28 +0000</pubDate>
      <link>https://dev.to/marcossevilla/cleaner-flutter-vol-7-where-the-data-comes-from-1kl5</link>
      <guid>https://dev.to/marcossevilla/cleaner-flutter-vol-7-where-the-data-comes-from-1kl5</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;⚠️ This article was deprecated. ⚠️&lt;/p&gt;

&lt;p&gt;Check out the updated full article on my personal &lt;a href="https://marcossevilla.dev/cleaner-flutter-vol-7" rel="noopener noreferrer"&gt;blog&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You can find even more and keep in contact with me on my socials:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/marcossevilla" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.linkedin.com/in/marcossevilla" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.twitch.tv/noscopedevs" rel="noopener noreferrer"&gt;Twitch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/MarcosJSevilla" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/noscopedevs" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>dart</category>
      <category>flutter</category>
      <category>clean</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Riverpod: Rewriting Provider</title>
      <dc:creator>Marcos Sevilla</dc:creator>
      <pubDate>Wed, 17 Feb 2021 17:18:57 +0000</pubDate>
      <link>https://dev.to/marcossevilla/riverpod-rewriting-provider-359n</link>
      <guid>https://dev.to/marcossevilla/riverpod-rewriting-provider-359n</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;⚠️ This article was deprecated. ⚠️&lt;/p&gt;

&lt;p&gt;Check out the updated full article on my personal &lt;a href="https://marcossevilla.dev/riverpod" rel="noopener noreferrer"&gt;blog&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You can find even more and keep in contact with me on my socials:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/marcossevilla" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.linkedin.com/in/marcossevilla" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.twitch.tv/noscopedevs" rel="noopener noreferrer"&gt;Twitch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/MarcosJSevilla" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/noscopedevs" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>dart</category>
      <category>flutter</category>
      <category>riverpod</category>
      <category>statemanagement</category>
    </item>
    <item>
      <title>Functional Programming in Dart</title>
      <dc:creator>Marcos Sevilla</dc:creator>
      <pubDate>Wed, 10 Feb 2021 17:37:22 +0000</pubDate>
      <link>https://dev.to/marcossevilla/functional-programming-in-dart-5b9g</link>
      <guid>https://dev.to/marcossevilla/functional-programming-in-dart-5b9g</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;⚠️ This article was deprecated. ⚠️&lt;/p&gt;

&lt;p&gt;Check out the updated full article on my personal &lt;a href="https://marcossevilla.dev/functional-dart" rel="noopener noreferrer"&gt;blog&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You can find even more and keep in contact with me on my socials:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/marcossevilla" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.linkedin.com/in/marcossevilla" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.twitch.tv/noscopedevs" rel="noopener noreferrer"&gt;Twitch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/MarcosJSevilla" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/noscopedevs" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>dart</category>
      <category>functional</category>
      <category>crossplatform</category>
    </item>
    <item>
      <title>Cleaner Flutter Vol. 6: Modeling some data</title>
      <dc:creator>Marcos Sevilla</dc:creator>
      <pubDate>Thu, 04 Feb 2021 17:49:59 +0000</pubDate>
      <link>https://dev.to/marcossevilla/cleaner-flutter-vol-6-modeling-some-data-4l92</link>
      <guid>https://dev.to/marcossevilla/cleaner-flutter-vol-6-modeling-some-data-4l92</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;⚠️ This article was deprecated. ⚠️&lt;/p&gt;

&lt;p&gt;Check out the updated full article on my personal &lt;a href="https://marcossevilla.dev/cleaner-flutter-vol-6" rel="noopener noreferrer"&gt;blog&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You can find even more and keep in contact with me on my socials:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/marcossevilla" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.linkedin.com/in/marcossevilla" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.twitch.tv/noscopedevs" rel="noopener noreferrer"&gt;Twitch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/MarcosJSevilla" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/noscopedevs" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>flutter</category>
      <category>dart</category>
      <category>clean</category>
      <category>architecture</category>
    </item>
    <item>
      <title>How to generate even more code with Freezed</title>
      <dc:creator>Marcos Sevilla</dc:creator>
      <pubDate>Mon, 25 Jan 2021 21:02:59 +0000</pubDate>
      <link>https://dev.to/marcossevilla/how-to-generate-even-more-code-with-freezed-2ijg</link>
      <guid>https://dev.to/marcossevilla/how-to-generate-even-more-code-with-freezed-2ijg</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;⚠️ This article was deprecated. ⚠️&lt;/p&gt;

&lt;p&gt;Check out the updated full article on my personal &lt;a href="https://marcossevilla.dev/freezed" rel="noopener noreferrer"&gt;blog&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You can find even more and keep in contact with me on my socials:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/marcossevilla" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.linkedin.com/in/marcossevilla" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.twitch.tv/noscopedevs" rel="noopener noreferrer"&gt;Twitch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/MarcosJSevilla" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/noscopedevs" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>dart</category>
      <category>flutter</category>
      <category>codegen</category>
      <category>freezed</category>
    </item>
    <item>
      <title>StateNotifier, an improved ChangeNotifier</title>
      <dc:creator>Marcos Sevilla</dc:creator>
      <pubDate>Mon, 25 Jan 2021 04:36:58 +0000</pubDate>
      <link>https://dev.to/marcossevilla/statenotifier-an-improved-changenotifier-3f84</link>
      <guid>https://dev.to/marcossevilla/statenotifier-an-improved-changenotifier-3f84</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;⚠️ This article was deprecated. ⚠️&lt;/p&gt;

&lt;p&gt;Check out the updated full article on my personal &lt;a href="https://marcossevilla.dev/state-notifier" rel="noopener noreferrer"&gt;blog&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You can find even more and keep in contact with me on my socials:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/marcossevilla" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.linkedin.com/in/marcossevilla" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.twitch.tv/noscopedevs" rel="noopener noreferrer"&gt;Twitch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/MarcosJSevilla" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/noscopedevs" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>dart</category>
      <category>flutter</category>
      <category>statemanagement</category>
      <category>statenotifier</category>
    </item>
    <item>
      <title>Cleaner Flutter Vol. 4: Hiring Repositories</title>
      <dc:creator>Marcos Sevilla</dc:creator>
      <pubDate>Fri, 15 Jan 2021 21:27:23 +0000</pubDate>
      <link>https://dev.to/marcossevilla/cleaner-flutter-vol-4-hiring-repositories-5bpa</link>
      <guid>https://dev.to/marcossevilla/cleaner-flutter-vol-4-hiring-repositories-5bpa</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;⚠️ This article was deprecated. ⚠️&lt;/p&gt;

&lt;p&gt;Check out the updated full article on my personal &lt;a href="https://marcossevilla.dev/cleaner-flutter-vol-4" rel="noopener noreferrer"&gt;blog&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You can find even more and keep in contact with me on my socials:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/marcossevilla" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.linkedin.com/in/marcossevilla" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.twitch.tv/noscopedevs" rel="noopener noreferrer"&gt;Twitch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/MarcosJSevilla" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/noscopedevs" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>flutter</category>
      <category>dart</category>
      <category>clean</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Cleaner Flutter Vol. 3: Dominating Entities</title>
      <dc:creator>Marcos Sevilla</dc:creator>
      <pubDate>Mon, 11 Jan 2021 05:11:04 +0000</pubDate>
      <link>https://dev.to/marcossevilla/cleaner-flutter-vol-3-dominating-entities-bk4</link>
      <guid>https://dev.to/marcossevilla/cleaner-flutter-vol-3-dominating-entities-bk4</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;⚠️ This article was deprecated. ⚠️&lt;/p&gt;

&lt;p&gt;Check out the updated full article on my personal &lt;a href="https://marcossevilla.dev/cleaner-flutter-vol-3" rel="noopener noreferrer"&gt;blog&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You can find even more and keep in contact with me on my socials:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/marcossevilla" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.linkedin.com/in/marcossevilla" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.twitch.tv/noscopedevs" rel="noopener noreferrer"&gt;Twitch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/MarcosJSevilla" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/noscopedevs" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>dart</category>
      <category>flutter</category>
      <category>clean</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Cleaner Flutter Vol. 1: Intro to CLEAN</title>
      <dc:creator>Marcos Sevilla</dc:creator>
      <pubDate>Sun, 03 Jan 2021 04:50:59 +0000</pubDate>
      <link>https://dev.to/marcossevilla/cleaner-flutter-vol-1-intro-to-clean-mo6</link>
      <guid>https://dev.to/marcossevilla/cleaner-flutter-vol-1-intro-to-clean-mo6</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;⚠️ This article was deprecated. ⚠️&lt;/p&gt;

&lt;p&gt;Check out the updated full article on my personal &lt;a href="https://marcossevilla.dev/cleaner-flutter-vol-1" rel="noopener noreferrer"&gt;blog&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You can find even more and keep in contact with me on my socials:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/marcossevilla" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.linkedin.com/in/marcossevilla" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.twitch.tv/noscopedevs" rel="noopener noreferrer"&gt;Twitch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/MarcosJSevilla" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/noscopedevs" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>dart</category>
      <category>flutter</category>
      <category>clean</category>
      <category>architecture</category>
    </item>
    <item>
      <title>FlutterGen: Good-bye Typos!</title>
      <dc:creator>Marcos Sevilla</dc:creator>
      <pubDate>Sat, 12 Dec 2020 06:43:52 +0000</pubDate>
      <link>https://dev.to/marcossevilla/fluttergen-good-bye-typos-6gp</link>
      <guid>https://dev.to/marcossevilla/fluttergen-good-bye-typos-6gp</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;⚠️ This article was deprecated. ⚠️&lt;/p&gt;

&lt;p&gt;Check out the updated full article on my personal &lt;a href="https://marcossevilla.dev/flutter-gen" rel="noopener noreferrer"&gt;blog&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You can find even more and keep in contact with me on my socials:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/marcossevilla" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.linkedin.com/in/marcossevilla" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.twitch.tv/noscopedevs" rel="noopener noreferrer"&gt;Twitch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/MarcosJSevilla" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/noscopedevs" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>flutter</category>
      <category>dart</category>
    </item>
    <item>
      <title>FlutterFire, a love story</title>
      <dc:creator>Marcos Sevilla</dc:creator>
      <pubDate>Wed, 16 Oct 2019 15:16:41 +0000</pubDate>
      <link>https://dev.to/marcossevilla/flutterfire-a-love-story-37of</link>
      <guid>https://dev.to/marcossevilla/flutterfire-a-love-story-37of</guid>
      <description>&lt;p&gt;&lt;strong&gt;If you already read it all:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Flutter&lt;/li&gt;
&lt;li&gt;Firebase&lt;/li&gt;
&lt;li&gt;Android setup&lt;/li&gt;
&lt;li&gt;iOS setup&lt;/li&gt;
&lt;li&gt;FlutterFire&lt;/li&gt;
&lt;li&gt;Last words&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The mobile world has evolved so much over the last couple of years. In the beginning, you wrote an Android app with the infamous Java and an iOS app with the unique Objective-C.&lt;/p&gt;

&lt;p&gt;Now, history has changed, you can make both apps at once from a single codebase. Yes, it sounds like a huge waste of resources and probably poor performance. It is, but not with Flutter.&lt;/p&gt;

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

&lt;p&gt;You can read a complete explanation in &lt;a href="https://flutter.dev" rel="noopener noreferrer"&gt;flutter.dev&lt;/a&gt;, but in a few words:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Flutter&lt;/strong&gt; is a framework for UIs made by Google using a language called &lt;em&gt;Dart&lt;/em&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  What is Dart?
&lt;/h3&gt;

&lt;p&gt;You can read a complete explanation in &lt;a href="https://dart.dev" rel="noopener noreferrer"&gt;dart.dev&lt;/a&gt;, but in a few words:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Dart&lt;/strong&gt; is a programming language (obviously) made by Google that first was thought as an alternative for JavaScript, and it can compile to JS, but its most important feature is that it compiles to native ARM machine code.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That capability actually makes Dart really efficient and the fact that Flutter is written in Dart, allows it to run in a lot of platforms like desktop, web and embedded devices.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is FlutterFire?
&lt;/h3&gt;

&lt;p&gt;I forgot, have you heard of Firebase? If not, it is one of Google's most amazing tools for managing the backend of your apps.&lt;/p&gt;

&lt;p&gt;And &lt;strong&gt;FlutterFire&lt;/strong&gt; is a group of plugins that allow Flutter to access a Firebase backend. So you can guess it's pretty awesome.&lt;/p&gt;

&lt;h2&gt;
  
  
  OK, with that said...
&lt;/h2&gt;

&lt;p&gt;When I started with Flutter in a project of a mobile app at work, I wanted to setup crashlytics and analytics for it. So my option was the known &lt;a href="https://fabric.io" rel="noopener noreferrer"&gt;Fabric&lt;/a&gt; but that cool service was acquired by Google and it became part of Firebase.&lt;/p&gt;

&lt;p&gt;So we're gonna use Firebase and FlutterFire to show you how to make a great backend and add other services to your apps.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So let's start.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;First things first, install Flutter &lt;a href="https://flutter.dev/docs/get-started/install" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;You probably have a Google account so, just head over to &lt;a href="https://firebase.google.com" rel="noopener noreferrer"&gt;Firebase&lt;/a&gt; and go to console to create a new project.&lt;/p&gt;

&lt;h1&gt;
  
  
  Flutter part &lt;a&gt;&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;OK, this is an example so with Flutter you should run &lt;code&gt;flutter create &amp;lt;cool_name&amp;gt;&lt;/code&gt; if you're using a text editor and let your app build.&lt;/p&gt;

&lt;p&gt;I'll use Android Studio because let's &lt;em&gt;keep things Google&lt;/em&gt;, or JetBrains, I don't care. &lt;/p&gt;

&lt;p&gt;Make sure you check the following configurations if you're using Android Studio too:&lt;/p&gt;

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

&lt;p&gt;Then we hit finish and we're going to leave that app as-is.&lt;/p&gt;

&lt;p&gt;I know you might think this is the end of the Flutter part but we'll come back for more. Now let's play with fire.&lt;/p&gt;

&lt;h1&gt;
  
  
  Firebase part &lt;a&gt;&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;When you go to the Firebase console, create a new project.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Call it whatever you want.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Don't enable analytics, yet.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Done.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Fresh new Firebase project. Easy, huh?&lt;/p&gt;

&lt;p&gt;Let's keep going.&lt;/p&gt;

&lt;h1&gt;
  
  
  Android setup &lt;a&gt;&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;Starting with the Android app, we're going to fill this info:&lt;/p&gt;

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

&lt;p&gt;One by one:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The first is found in the Android folder of your Flutter app. You go this way: &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;android/app/src/main/AndroidManifest.xml&lt;/code&gt;&lt;br&gt;
There you'll find the package name like &lt;code&gt;com.&amp;lt;company&amp;gt;.&amp;lt;appName&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A nickname, optional.&lt;/li&gt;
&lt;li&gt;This is your debug SHA-1, it is optional but my personal recommendation is to put it. If you click the interrogation button it shows a guide to get it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Next, download that &lt;code&gt;google-services.json&lt;/code&gt; and put it in the app module of your android folder, like this: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fodpbsi91l29lxyjjq14t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fodpbsi91l29lxyjjq14t.png" alt="Where is the google-services.json" width="636" height="1216"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;On the third step, you have to setup &lt;strong&gt;add&lt;/strong&gt; Firebase in the Android app, I'll tell you the file you're going to edit and what to put. &lt;/p&gt;

&lt;p&gt;But before that, open the &lt;code&gt;AndroidManifest.xml&lt;/code&gt; if you closed it, and click on the upper right the &lt;code&gt;Open for Editing in Android Studio&lt;/code&gt; button. &lt;/p&gt;

&lt;p&gt;That opens a new Android Studio window with the Flutter's Android app as a single Android app. Easier to work with.&lt;/p&gt;

&lt;p&gt;If you clicked the button I told you, you now have this view:&lt;/p&gt;

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

&lt;p&gt;Now, these are the files and the lines to add:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;build.gradle&lt;/code&gt; the one that says &lt;em&gt;(Project: android)&lt;/em&gt;, add in &lt;code&gt;buildscript&lt;/code&gt; property &lt;code&gt;dependencies&lt;/code&gt; under &lt;code&gt;$kotlin_version&lt;/code&gt; the Google Services line:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;classpath 'com.google.gms:google-services:4.3.2'&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Your version may vary, check what Firebase suggests.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;build.gradle&lt;/code&gt; the one that says &lt;em&gt;(Module: app)&lt;/em&gt;, check if it has the &lt;code&gt;apply plugin: 'com.android.application'&lt;/code&gt; under all the Flutter SDK, versionCode and versionName configuration. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then add at the very bottom of that file this line: &lt;code&gt;apply plugin: 'com.google.gms.google-services'&lt;/code&gt;. That actually applies the Firebase SDK.&lt;/p&gt;

&lt;p&gt;Then, let's sync gradle.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;By the way, probably as you travel through the Android project some warnings will show up. Just refactor and let the IDE do its job.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Go back to the Firebase console&lt;/strong&gt; and click &lt;code&gt;Next&lt;/code&gt;, then &lt;code&gt;Go to console&lt;/code&gt; and your Android app is setup. 🥳&lt;/p&gt;

&lt;p&gt;Now let's set up the other app.&lt;/p&gt;
&lt;h1&gt;
  
  
  iOS setup &lt;a&gt;&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;iOS it's actually easier I might say. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you don't have a Mac, this is probably useless, skip here.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Let's open the iOS app with Xcode, obviously, you need to have Xcode installed with its components and other stuff configured.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fshggnwp7hpspncrx492t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fshggnwp7hpspncrx492t.png" alt="how to open flutter in Xcode" width="800" height="494"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now that you've opened it, we need to fill this info:&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;The first you can find it selecting the project in Xcode, then the &lt;code&gt;Target&lt;/code&gt; and heading to the &lt;code&gt;General&lt;/code&gt; tab.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here's a visual guide:&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Again, optional app nickname.&lt;/li&gt;
&lt;li&gt;If you already published your iOS app in the AppStore, fill the URL with the AppStore URL.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;OK, now download the &lt;code&gt;GoogleService-Info.plist&lt;/code&gt; (the equivalent of Android's JSON file) and put it under the &lt;code&gt;info.plist&lt;/code&gt; in Xcode.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ATTENTION&lt;/strong&gt;. Do that dragging it to Xcode, not in Finder. &lt;/p&gt;

&lt;p&gt;You will see this modal:&lt;/p&gt;

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

&lt;p&gt;And hit &lt;code&gt;Finish&lt;/code&gt;. Done.&lt;/p&gt;

&lt;p&gt;Then skip all the next steps in Firebase configuration. Flutter gets in charge of those.&lt;/p&gt;
&lt;h1&gt;
  
  
  FlutterFire &lt;a&gt;&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;Let's use the plugins!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;YOUR APP MUST NOT BE RUNNING RIGHT NOW.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Open the &lt;code&gt;pubspec.yaml&lt;/code&gt; in your Flutter app and add the Firebase Core:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;firebase_core: ^0.4.0+9&lt;/code&gt;, that's the version I'll use but you can use a newer one. Should look like this:&lt;/p&gt;

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

&lt;p&gt;Then run &lt;code&gt;flutter packages get&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;And now that the core of Firebase is in our app, let's install plugins.&lt;/p&gt;

&lt;p&gt;I am lazy, so I'll use the analytics one because it's actually the easiest to test. &lt;a href="https://github.com/FirebaseExtended/flutterfire" rel="noopener noreferrer"&gt;Here&lt;/a&gt; you have a list of all the plugins you can add.&lt;/p&gt;

&lt;p&gt;Under the &lt;code&gt;firebase_core&lt;/code&gt; you can add &lt;code&gt;firebase_analytics: ^5.0.2&lt;/code&gt;, that's the version I'm going to use.&lt;/p&gt;

&lt;p&gt;Analytics can be used like any other Flutter package. I'm going to use the sample in &lt;a href="https://pub.dev/packages/firebase_analytics#-readme-tab-" rel="noopener noreferrer"&gt;pub.dev&lt;/a&gt; because again, I'm a lazy dev.&lt;/p&gt;

&lt;p&gt;My &lt;code&gt;main.dart&lt;/code&gt; looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight dart"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="s"&gt;'package:firebase_analytics/firebase_analytics.dart'&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="s"&gt;'package:firebase_analytics/observer.dart'&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="s"&gt;'package:flutter/material.dart'&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;runApp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;MyApp&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;

&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;MyApp&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="n"&gt;StatelessWidget&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nd"&gt;@override&lt;/span&gt;
  &lt;span class="n"&gt;Widget&lt;/span&gt; &lt;span class="n"&gt;build&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;BuildContext&lt;/span&gt; &lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;FirebaseAnalytics&lt;/span&gt; &lt;span class="n"&gt;analytics&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;FirebaseAnalytics&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;MaterialApp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
      &lt;span class="nl"&gt;title:&lt;/span&gt; &lt;span class="s"&gt;'Flutter Demo'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="nl"&gt;theme:&lt;/span&gt; &lt;span class="n"&gt;ThemeData&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="nl"&gt;primarySwatch:&lt;/span&gt; &lt;span class="n"&gt;Colors&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;blue&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="p"&gt;),&lt;/span&gt;
      &lt;span class="nl"&gt;home:&lt;/span&gt; &lt;span class="n"&gt;MyHomePage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;title:&lt;/span&gt; &lt;span class="s"&gt;'Flutter Demo Home Page'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
      &lt;span class="nl"&gt;navigatorObservers:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="n"&gt;FirebaseAnalyticsObserver&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;analytics:&lt;/span&gt; &lt;span class="n"&gt;analytics&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
      &lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;MyHomePage&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="n"&gt;StatefulWidget&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="n"&gt;MyHomePage&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="n"&gt;Key&lt;/span&gt; &lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;title&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="k"&gt;super&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;key:&lt;/span&gt; &lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="kd"&gt;final&lt;/span&gt; &lt;span class="kt"&gt;String&lt;/span&gt; &lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="nd"&gt;@override&lt;/span&gt;
  &lt;span class="n"&gt;_MyHomePageState&lt;/span&gt; &lt;span class="n"&gt;createState&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;_MyHomePageState&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;_MyHomePageState&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="n"&gt;State&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;MyHomePage&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;_counter&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="n"&gt;_incrementCounter&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;setState&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="n"&gt;_counter&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="nd"&gt;@override&lt;/span&gt;
  &lt;span class="n"&gt;Widget&lt;/span&gt; &lt;span class="n"&gt;build&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;BuildContext&lt;/span&gt; &lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;Scaffold&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
      &lt;span class="nl"&gt;appBar:&lt;/span&gt; &lt;span class="n"&gt;AppBar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="nl"&gt;title:&lt;/span&gt; &lt;span class="n"&gt;Text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;widget&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;title&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
      &lt;span class="p"&gt;),&lt;/span&gt;
      &lt;span class="nl"&gt;body:&lt;/span&gt; &lt;span class="n"&gt;Center&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="nl"&gt;child:&lt;/span&gt; &lt;span class="n"&gt;Column&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
          &lt;span class="nl"&gt;mainAxisAlignment:&lt;/span&gt; &lt;span class="n"&gt;MainAxisAlignment&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;center&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="nl"&gt;children:&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;Widget&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;[&lt;/span&gt;
            &lt;span class="n"&gt;Text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
              &lt;span class="s"&gt;'You have pushed the button this many times:'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="p"&gt;),&lt;/span&gt;
            &lt;span class="n"&gt;Text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
              &lt;span class="s"&gt;'&lt;/span&gt;&lt;span class="si"&gt;$_counter&lt;/span&gt;&lt;span class="s"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
              &lt;span class="nl"&gt;style:&lt;/span&gt; &lt;span class="n"&gt;Theme&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;of&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;textTheme&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;display1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="p"&gt;),&lt;/span&gt;
          &lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="p"&gt;),&lt;/span&gt;
      &lt;span class="p"&gt;),&lt;/span&gt;
      &lt;span class="nl"&gt;floatingActionButton:&lt;/span&gt; &lt;span class="n"&gt;FloatingActionButton&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="nl"&gt;onPressed:&lt;/span&gt; &lt;span class="n"&gt;_incrementCounter&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nl"&gt;tooltip:&lt;/span&gt; &lt;span class="s"&gt;'Increment'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nl"&gt;child:&lt;/span&gt; &lt;span class="n"&gt;Icon&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Icons&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;add&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
      &lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now &lt;strong&gt;RUN, FORREST, RUN&lt;/strong&gt; that app.&lt;/p&gt;

&lt;p&gt;You can see if it actually worked in your Firebase console, go to analytics dashboard and if you ran your app in both devices, there should be an Android and an iOS device in the daily active users, like this:&lt;/p&gt;

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

&lt;p&gt;That should be it, you've configured Firebase for a Flutter app and also used one of the FlutterFire plugins! 🎉&lt;/p&gt;

&lt;h1&gt;
  
  
  Last words &lt;a&gt;&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;If you're a lazy dev like me, you probably love Firebase as much as I do. Also, Flutter makes mobile development really fast and Google has put so much effort into making both work seamless together.&lt;/p&gt;

&lt;p&gt;Go hack some stuff with this stack!&lt;/p&gt;

&lt;p&gt;Also, if I didn't mention something and you have doubts about some part in this post, remember this meme:&lt;/p&gt;

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

</description>
      <category>flutter</category>
      <category>firebase</category>
      <category>dart</category>
      <category>mobile</category>
    </item>
  </channel>
</rss>
