<?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: Milind Mevada</title>
    <description>The latest articles on DEV Community by Milind Mevada (@milindmevada).</description>
    <link>https://dev.to/milindmevada</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%2F170364%2F6f80e7c9-8e5e-4759-b2df-64fcd2da89d0.png</url>
      <title>DEV Community: Milind Mevada</title>
      <link>https://dev.to/milindmevada</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/milindmevada"/>
    <language>en</language>
    <item>
      <title>14 Latest Apps Built Using Flutter Framework</title>
      <dc:creator>Milind Mevada</dc:creator>
      <pubDate>Fri, 25 Sep 2020 06:23:51 +0000</pubDate>
      <link>https://dev.to/solutelabs/14-latest-apps-built-using-flutter-framework-3gb4</link>
      <guid>https://dev.to/solutelabs/14-latest-apps-built-using-flutter-framework-3gb4</guid>
      <description>&lt;p&gt;Three years ago, if you asked someone about Flutter, they would probably look out the window and point to a small bird flying.&lt;/p&gt;

&lt;p&gt;Then 2018 happened, and Tim Sneath from Google announced that Flutter 1.0 is being released to the world of programmers.&lt;/p&gt;

&lt;p&gt;The landscape of cross-platform app development has never been the same. Flutter took on heavyweights such as React Native and has been rapidly racing to the top spot in the “best cross-platform app development kit.”&lt;/p&gt;

&lt;p&gt;As we write this piece in 2020, there are hundreds of developers out there building a host of apps using Flutter, all with the aim of getting to the top of the App charts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So in this article, we take a look at:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; What makes Flutter so popular among web developers?&lt;/li&gt;
&lt;li&gt; What are the top 14 apps built using Flutter?&lt;/li&gt;
&lt;li&gt; What happened when the penguin, the polar bear, and the Rabbi walked into a bar?&lt;/li&gt;
&lt;li&gt; Where is Flutter headed?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Okay, the answer to №3 may be a bit off-topic, but we got the rest of the questions covered.&lt;/p&gt;

&lt;p&gt;Let’s start by seeing what makes Flutter so popular.&lt;/p&gt;

&lt;h2&gt;
  
  
  What makes Flutter so popular?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Faster coding&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The average coder spends less than half of their working day writing code, according to this ActiveState 2019 developer &lt;a href="https://www.activestate.com/resources/white-papers/developer-survey-2019-open-source-runtime-pains/" rel="noopener noreferrer"&gt;survey&lt;/a&gt;. A whopping 61% say they spend most of their working day doing things like testing bugs, attending meetings, and in general, not writing code.&lt;/p&gt;

&lt;p&gt;So our developers are already stretched for time, and we want a framework that speeds up development time. This is where Flutter comes in.&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%2Fcdn-images-1.medium.com%2Fmax%2F960%2F0%2A_Oz1ppMxShxkOPs1" 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%2Fcdn-images-1.medium.com%2Fmax%2F960%2F0%2A_Oz1ppMxShxkOPs1" width="394" height="289"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://giphy.com/" rel="noopener noreferrer"&gt;Image Credit&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Flutter means we can now develop apps faster and in a more dynamic manner. Developers can now code and then see the changes straight away. Called Hot Reload, this function only takes a few milliseconds to take effectand helps teams fix bugs and develop features faster.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Cross-platform nature&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Flutter lets you build both iOS and Android apps using the same codebase. This means shorter development times, and also translates to lesser costs since we don’t have to train two sets of developers.&lt;/p&gt;

&lt;p&gt;This does not mean Flutter developers have to compromise on the app’s aesthetics or performance. Flutter lets developers build near-native experiences into their apps. Dart, the programming language used in Flutter, is strongly typed and object-oriented.&lt;/p&gt;

&lt;p&gt;Due to the object-oriented nature of Dart, the JS bridge is not necessary while creating apps with Flutter. The ahead of time compilation (AOT) also means that the app will startup in less time.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Less testing&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When your app has only one codebase, it means your Quality assurance process can be speeded up. Since there is only one code base, developers need to write automated test cases only once.&lt;/p&gt;

&lt;p&gt;QA specialists also have more time on their hands since they need to check only one app.&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%2Fcdn-images-1.medium.com%2Fmax%2F960%2F0%2AlqPN4O71ZKDh5yhF" 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%2Fcdn-images-1.medium.com%2Fmax%2F960%2F0%2AlqPN4O71ZKDh5yhF" width="480" height="317"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://giphy.com/" rel="noopener noreferrer"&gt;Image source&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;An interesting note at this juncture. If you have minor differences in your app, then you need to test it on both the platforms, just in case. Flutter apps use a shared codebase, and you can’t exactly predict how certain features work when you build your app using Flutter.&lt;/p&gt;

&lt;p&gt;So if a certain button that looks really good on an Android phone but looks all “boxy” on your iPhone, don’t tell us we didn’t warn you.&lt;/p&gt;

&lt;h2&gt;
  
  
  Here is our pick of the top 14 Flutter apps:
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;1. Inkino — Movie ticket booking&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;What do the Finnish do when they are not hiking or taking pictures of their beautiful countryside? Why, they visit the movies, of course!!!&lt;/p&gt;

&lt;p&gt;And the InKino app helps them choose a movie super fast, thanks to the intuitive user interface and easy scrolling.&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%2Fcdn-images-1.medium.com%2Fmax%2F960%2F0%2A6KGBZ91einiwDheH" 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%2Fcdn-images-1.medium.com%2Fmax%2F960%2F0%2A6KGBZ91einiwDheH" alt="Inkino — Movie ticket booking" width="729" height="1296"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://itsallwidgets.com/inkino" rel="noopener noreferrer"&gt;Image credit&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With a 40% shared codebase between Flutter and web, InKino is a good example of a multiplatform Dart project.&lt;/p&gt;

&lt;p&gt;The Android and iOS app is built using a single codebase. So the next time you are in Finland and need to head to the nearest movie theater, give this Flutter app a shoutout.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;2. Music Tutor&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Ever wanted to play the piano but didn’t get the time to learn? Reading sheet music becoming a chore for your everyday task? The guys at Music Tutor, a Sight Reading app, saw this problem and decided to solve it using Flutter.&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%2Fcdn-images-1.medium.com%2Fmax%2F960%2F0%2Az8ZKhko8m6yNy1ON" 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%2Fcdn-images-1.medium.com%2Fmax%2F960%2F0%2Az8ZKhko8m6yNy1ON" alt="Music Tutor Flutter App" width="729" height="1296"&gt;&lt;/a&gt;&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%2Fcdn-images-1.medium.com%2Fmax%2F960%2F0%2AfTyGTInB4nL7Wv1a" 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%2Fcdn-images-1.medium.com%2Fmax%2F960%2F0%2AfTyGTInB4nL7Wv1a" alt="Music Tutor Flutter App" width="729" height="1296"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Using the app is as simple as picking up a piano and playing random notes ( although we don’t recommend doing this with an actual piano.. :P ), and the app supports Solfege and German note names.&lt;/p&gt;

&lt;p&gt;The app also comes with a sheet music reference chart for treble, bass, and alto clefs. The app is climbing the charts of the App Store as we speak, thanks to the native look and feel of the app.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;3. Topline — Music Recording App&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Have you ever been on the road and had a song idea pop into your head? Music creators have, and that’s why they have been looking for an app to capture their musical ideas on the fly.&lt;/p&gt;

&lt;p&gt;The good folks at Topline saw this gap and created an app to do just that!! TopLine, built using Flutter, helps music creators save an idea as soon as it pops into their heads.&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%2Fcdn-images-1.medium.com%2Fmax%2F960%2F0%2AmiV5Lrm5wHhzq3t_" 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%2Fcdn-images-1.medium.com%2Fmax%2F960%2F0%2AmiV5Lrm5wHhzq3t_" alt="Topline — Music Recording Flutter App" width="373" height="730"&gt;&lt;/a&gt;&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%2Fcdn-images-1.medium.com%2Fmax%2F960%2F0%2A3gBEyrAwcl10SMsC" 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%2Fcdn-images-1.medium.com%2Fmax%2F960%2F0%2A3gBEyrAwcl10SMsC" alt="Topline — Music Recording Flutter App" width="398" height="714"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This version of the app on iOS and the Flutter version was created in a record ten weeks. The app lets you record your music, add lyrics, and also share files and sync them easily to the cloud.&lt;/p&gt;

&lt;p&gt;Talk about speed and accuracy!! Take a bow, Japanese bullet trains… Take a bow!!&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;4. Xianyu by Alibaba&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;When we hear the word Alibaba, Jack Ma, Amazon, and world domination all somehow come into the picture. And that’s what they aimed with their Xianyu app too.&lt;/p&gt;

&lt;p&gt;Alibaba’s Xianyu has over 200 million registered users, with a whopping 50 million using Flutter!! That’s a lot of Chinese goods flying around… if you know what we mean.. Wink wink..&lt;/p&gt;

&lt;p&gt;Take a look at their own developer story.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/jtYk3gWRSw0"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;When they looked at a framework that was easy to build and scale, Flutter came across as the ideal choice. Some of their most complex pages, which had millions of users scrolling through every minute, are now built on Flutter.&lt;/p&gt;

&lt;p&gt;Better watch out, Mr. Bezos. These guys look like they seem business. (Pun intended)&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;5. Google Ads&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;While compiling our list for the best Flutter apps, we could not help keep this bad boy out-Google Ads. Google’s easy to use Ad platform lets anyone run their digital marketing campaigns without a hassle.&lt;/p&gt;

&lt;p&gt;This may not sound like much for the average Joe who does not know or care about how ad campaigns are run, but for a Digital marketer, Google Ads is manna straight from digital heaven.&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%2Fcdn-images-1.medium.com%2Fmax%2F960%2F0%2ANODuH5ssW3dDwAbd" 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%2Fcdn-images-1.medium.com%2Fmax%2F960%2F0%2ANODuH5ssW3dDwAbd" alt="Google Ads Flutter App" width="729" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Google Ads lets you view critical statistics about your app like impressions, clicks, conversions, and also get real-time support from Google.&lt;/p&gt;

&lt;p&gt;Since it is made by Google, it is also super easy to use and understand. Will Google build more awesome products using a framework that they themselves built ( kinda like Inception?).&lt;/p&gt;

&lt;p&gt;Only time will tell.&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%2Fcdn-images-1.medium.com%2Fmax%2F960%2F0%2Aan3C6URgBuJM8baF" 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%2Fcdn-images-1.medium.com%2Fmax%2F960%2F0%2Aan3C6URgBuJM8baF" width="236" height="384"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;6. Reflectly — Journaling app&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Reflectly&lt;/strong&gt;, the journaling app that everyone loves now was actuallybuilt way back in the summer of 2017 using React Native. But the developers at Reflectly faced a nightmare while trying to achieve the same consistent user experience on both Android and iOS, which forced them to look elsewhere.&lt;/p&gt;

&lt;p&gt;This was when Flutter entered the scene, and, although Xamarin had already established itself around the time, the team at Reflectly took a chance with Flutter. Since Flutter uses Dart 2, the developers felt it was easier on the eyes.&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%2Fcdn-images-1.medium.com%2Fmax%2F960%2F0%2AJerRUW-khctq93c3" 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%2Fcdn-images-1.medium.com%2Fmax%2F960%2F0%2AJerRUW-khctq93c3" alt="Reflectly — Journaling flutter app" width="729" height="629"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The team at Reflectly rewrote the Flutter app in two months and felt that putting together the UI was far easier than they could ever have done.&lt;/p&gt;

&lt;p&gt;Reflectly has gone from strength to strength since then, raising $4.3 million in a recent investment round and boosting its user count from 2 million to 10 million in a month.&lt;/p&gt;

&lt;p&gt;Talk about Blitzscaling!!&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;7. Postmuse — Instagram photo editing app&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Instagram is the next Facebook. That’s not an overstatement; it is just the way things are. Facebook is seen as something that your old uncle uses to snoop in on your high school graduation pictures.&lt;/p&gt;

&lt;p&gt;And since a lot of new businesses are now porting to Insta, it just makes sense to have professional looking Instagram photos. This is where PostMuse comes in.&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%2Fcdn-images-1.medium.com%2Fmax%2F960%2F0%2AS3uySiy3A-Y45IrT" 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%2Fcdn-images-1.medium.com%2Fmax%2F960%2F0%2AS3uySiy3A-Y45IrT" alt="Postmuse — Instagram photo editing flutter app" width="729" height="1296"&gt;&lt;/a&gt;&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%2Fcdn-images-1.medium.com%2Fmax%2F960%2F0%2AEPZTTWUVLeJu6_Hu" 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%2Fcdn-images-1.medium.com%2Fmax%2F960%2F0%2AEPZTTWUVLeJu6_Hu" alt="Postmuse — Instagram photo editing flutter app" width="729" height="1296"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;PostMuse lets you browse through Instagram photo templates, edit them, and even create your own templates.&lt;/p&gt;

&lt;p&gt;If picking colours was your issue, PostMuse got you covered there too. The app suggests the best image that you can use so that your profile looks like it was created by a professional Social media marketer.&lt;/p&gt;

&lt;p&gt;Happy posting.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;8. In10 — Meetup app&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Ever been the head of a party planning committee and had to deal with a bunch of people all showing up after the allotted time? The guys at in10 saw this as a major problem statement that could be solved using technology.&lt;/p&gt;

&lt;p&gt;In10 allows users to create new events in a very easy to use intuitive user interface, share status updates and ETAs and invite guests to events via SMS.&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%2Fcdn-images-1.medium.com%2Fmax%2F960%2F0%2ASF9ALWCl_dKeAdp1" 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%2Fcdn-images-1.medium.com%2Fmax%2F960%2F0%2ASF9ALWCl_dKeAdp1" alt="In10 — Meetup flutter app" width="680" height="608"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The user’s privacy is given utmost importance, with users only being able to see the relative distance of the other members of the meetup group to the event location.&lt;/p&gt;

&lt;p&gt;So go ahead, meet your friends, cut that cake on time, and be back home to watch the football game on time.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;9. Pairing — Tinder using Flutter&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Tinder became so popular over the past few years that it has almost found a place in the dictionary, and Swipe Right and Swipe Left have become a part of our daily lingo.&lt;/p&gt;

&lt;p&gt;So when the guys at Pairing decided to build a dating app, they wanted to build something more sophisticated. With a UI that looks like Tinder but is much easier to scroll through, Pairing is the perfect example of a popular app that was cloned using Flutter.&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%2Fcdn-images-1.medium.com%2Fmax%2F960%2F0%2Abc3blz9VBNaBzHrU" 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%2Fcdn-images-1.medium.com%2Fmax%2F960%2F0%2Abc3blz9VBNaBzHrU" alt="Pairing — Tinder using Flutter" width="447" height="395"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are no targeted ads, and the app uses advanced Math to match your single friends to others who may be interested in a new relationship. Pairing also allows for extended search, allowing you to match with people outside your social circle.&lt;/p&gt;

&lt;p&gt;There is also a free chat option with potential matches and friends.&lt;/p&gt;

&lt;p&gt;Happy dating!!&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;10. Traqade — proudly made by SoluteLabs&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;We at SoluteLabs have been playing around with Flutter ourselves for a while now, and have built a few apps that are rapidly climbing the popularity charts.&lt;/p&gt;

&lt;p&gt;Traqade, for example, is an app that allows you to schedule your gym timings and schedule talks with nutritionists.&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%2Fcdn-images-1.medium.com%2Fmax%2F960%2F0%2AShZBm2ZLwn4KMiG2" 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%2Fcdn-images-1.medium.com%2Fmax%2F960%2F0%2AShZBm2ZLwn4KMiG2" alt="Traqade — proudly made by SoluteLabs" width="376" height="637"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We took the app from an idea to implementation within a short span of five months!!&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;11. KlasterMe- Content Sharing&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;When we were compiling our list of the top apps built using Flutter, we decided that we were going to compile one of the most promising apps way down in the list, just because it just looks so damn sexy!!&lt;/p&gt;

&lt;p&gt;KlasterMe allows you to share photos, videos, and any form of content online. They released the pilot version of the app in December 2018, with the iOS and mobile apps being ready to use within a month.&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%2Fcdn-images-1.medium.com%2Fmax%2F960%2F0%2Apzmu0ehPsjj7_lCi" 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%2Fcdn-images-1.medium.com%2Fmax%2F960%2F0%2Apzmu0ehPsjj7_lCi" alt="KlasterMe- Content Sharing" width="503" height="455"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;According to the team at KlusterMe, Flutter made the development super-fast, allowing them to go from an MVP to a ready app in a short amount of time. Although the initial learning curve may sound a bit steep for the developers, the awesome documentation provided by the Flutter team made learning the language a breeze.&lt;/p&gt;

&lt;p&gt;Users of KlasterMe can create and share content easily on the app, and it looks like Instagram will now have to face some stiff competition down the road.&lt;/p&gt;

&lt;p&gt;Like a little student Samurai who may soon overtake the master.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;12. Google Pay — Tez&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;When Google launched its payment app in India close to three years ago, it wanted to create an app that was as simple to use as the search engine. Google Pay was launched in India, and it was called Tez.&lt;/p&gt;

&lt;p&gt;The app was super popular, and today, Google Pay has close to 70 million active users, driving transactions of over $10 billion. Google wanted to build a fast and efficient development environment, and looked at Flutter as the go-to language.&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%2Fcdn-images-1.medium.com%2Fmax%2F960%2F0%2AG-tMrS0XYGcmACNt" 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%2Fcdn-images-1.medium.com%2Fmax%2F960%2F0%2AG-tMrS0XYGcmACNt" alt="Google Pay — Tez" width="800" height="440"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With a clean UI that works flawlessly, Tez is an excellent application that showcases how an active app that is used by millions of users can be rewritten flawlessly.&lt;/p&gt;

&lt;p&gt;Once its fully migrated, Google pay will become one of the biggest production deployments on the Flutter platform.&lt;/p&gt;

&lt;p&gt;Looks like this bird is going to fly far..&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;13. Synergy — proudly made by SoluteLabs&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;When a shipping conglomerate got in touch with SoluteLabs to build an app for more than 13000 of its seafarers, we realised in a jiffy that Flutter was the way to go.&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%2Fcdn-images-1.medium.com%2Fmax%2F960%2F0%2AAPVNE1B0ZB5IHVng" 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%2Fcdn-images-1.medium.com%2Fmax%2F960%2F0%2AAPVNE1B0ZB5IHVng" alt="Synergy — proudly made by SoluteLabs" width="603" height="604"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Using Synergy, the manning and crewing team got touch with each other easily and seafarers had a breeze of a time while managing their database.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;14. Konwene — proudly made by SoluteLabs&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Meetups have never been easier thanks to the Konwene app, and when the founders got in touch with us with the idea, we knew in a spark that this was a textbook case for Flutter.&lt;/p&gt;

&lt;p&gt;People can use Konwene to plan gatherings, arrange birthday parties, and let their friends or family know about the next upcoming event.&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%2Fcdn-images-1.medium.com%2Fmax%2F960%2F0%2ADHvKW6yOEis90yDQ" 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%2Fcdn-images-1.medium.com%2Fmax%2F960%2F0%2ADHvKW6yOEis90yDQ" alt="Konwene — proudly made by SoluteLabs" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We had the early mover advantage since SoluteLabs adopted Flutter soon after its release, and the team at Konwene were super happy with our agile software development methodology.&lt;/p&gt;

&lt;p&gt;And that’s a wrap, folks. We have talked about the thirteen apps that look and feel good, but Flutter is moving at a pace that will put Elon Musk’s SpaceX rocket to shame.&lt;/p&gt;

&lt;p&gt;Flutter does have a few disadvantages, like a limited library and above-average app size on your mobile, but our good friends at Google are always working to improve Flutter.&lt;/p&gt;

&lt;p&gt;There will be new apps, some as soon as the end of the year, that will look and feel much better than the current native apps.&lt;/p&gt;

&lt;p&gt;If you do plan to develop an app using Flutter and want a team that is fun to work with but serious about the code, you can give &lt;a href="https://www.solutelabs.com/" rel="noopener noreferrer"&gt;SoluteLabs&lt;/a&gt; a shoutout.&lt;/p&gt;

&lt;p&gt;We also have a tonne of resources on Flutter, with “&lt;strong&gt;paginating your data in Flutter&lt;/strong&gt;” being the most popular one. You can read that &lt;a href="https://www.solutelabs.com/blog/how-to-paginate-your-data-in-flutter" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Fly away, fluttering little bird.. Fly away..&lt;/p&gt;

</description>
      <category>flutter</category>
      <category>flutterdev</category>
      <category>appdevelopment</category>
    </item>
    <item>
      <title>Flutter for Web: How to Deploy a Flutter Web App?</title>
      <dc:creator>Milind Mevada</dc:creator>
      <pubDate>Thu, 19 Mar 2020 12:23:12 +0000</pubDate>
      <link>https://dev.to/solutelabs/flutter-for-web-how-to-deploy-a-flutter-web-app-5gbg</link>
      <guid>https://dev.to/solutelabs/flutter-for-web-how-to-deploy-a-flutter-web-app-5gbg</guid>
      <description>&lt;p&gt;With the &lt;a href="https://medium.com/flutter/announcing-flutter-1-12-what-a-year-22c256ba525d" rel="noopener noreferrer"&gt;stable release of Flutter 1.12&lt;/a&gt;, Flutter for &lt;a href="https://flutter.dev/web" rel="noopener noreferrer"&gt;web&lt;/a&gt; is now in the beta channel. But ahead of a beta release, the community has already started building for Flutter web.&lt;/p&gt;

&lt;p&gt;While &lt;a href="https://www.solutelabs.com/web-app-development" rel="noopener noreferrer"&gt;building web apps&lt;/a&gt;, deploying it is one of the most essential tasks - be it is for internal QA purposes, for staging, or production environments. Before releasing the Flutter web app, it is required to create a release bundle and a few of the best practices to release, which are explained &lt;a href="https://flutter.dev/docs/deployment/web" rel="noopener noreferrer"&gt;here&lt;/a&gt; in detail.&lt;/p&gt;

&lt;p&gt;From my experience of building and deploying apps, I'm going to discuss the &lt;strong&gt;Top 5 (IMO) Ways to Deploy Flutter Web Apps&lt;/strong&gt;. They are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Firebase Hosting&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Github Pages&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Netlify&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Codemagic Static Pages&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AWS S3 (through codemagic)&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;#1: Firebase Hosting&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Step 1&lt;/strong&gt;: Create a project on Firebase console&lt;br&gt;
&lt;strong&gt;Step 2&lt;/strong&gt;: Download &lt;a href="https://firebase.google.com/docs/cli#setup_update_cli" rel="noopener noreferrer"&gt;Firebase CLI&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Step 3&lt;/strong&gt;: Login via CLI, execute the command &lt;br&gt;
&lt;code&gt;firebase login&lt;/code&gt;&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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F0%2AbFkJIUyOn_407TNw" 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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F0%2AbFkJIUyOn_407TNw" alt="-----" width="800" height="241"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4&lt;/strong&gt;: Choose "Hosting" when asked for a feature&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%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2Av3DzMhwapepFJvgm" 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%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2Av3DzMhwapepFJvgm" alt="----------" width="800" height="287"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5&lt;/strong&gt;: Then, Select an existing Project&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%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2A73Rguj13145sDAad" 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%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2A73Rguj13145sDAad" alt="----------" width="800" height="299"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 6&lt;/strong&gt;: Choose &lt;em&gt;build/web&lt;/em&gt; as a directory &amp;amp; configure as a single-page app&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%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2Avct25uAEHH80pwQg" 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%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2Avct25uAEHH80pwQg" alt="----------" width="800" height="397"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;If you see, File build/web/index.html already exists. Overwrite?&lt;br&gt;
Then select **NO&lt;/em&gt;&lt;em&gt;. So it will not generate a default index.html file&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Step 7&lt;/strong&gt;: Deploy!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;firebase deploy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2ATZbn54zxI8A2ErFC" 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%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2ATZbn54zxI8A2ErFC" alt="----------" width="800" height="471"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;#2: Github Pages&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Pre-requisites&lt;/strong&gt;: Create a repo on Github.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1&lt;/strong&gt;: Use this pub&lt;/p&gt;

&lt;p&gt;&lt;a href="https://pub.dev/packages/peanut" rel="noopener noreferrer"&gt;peanut | Dart Package&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Execute the command&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;flutter pub global run peanut:peanut
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 2&lt;/strong&gt;: Flutter web-related files will be generated to the separate branch &lt;strong&gt;gh-pages&lt;/strong&gt; (Don't forget to push the branch origin)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3&lt;/strong&gt;: Change the GitHub pages source branch. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Go to&lt;/strong&gt;: Repository → Settings → Options → Github Pages → Source branch: select &lt;strong&gt;gh-pages&lt;/strong&gt;&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%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2AJljqoS6XpEIYEXIZ" 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%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2AJljqoS6XpEIYEXIZ" alt="----------" width="800" height="407"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4&lt;/strong&gt;: Web app will be deployed to&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;http&lt;span class="o"&gt;(&lt;/span&gt;s&lt;span class="o"&gt;)&lt;/span&gt;://&amp;lt;username&amp;gt;.github.io/&amp;lt;build&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  &lt;strong&gt;#3: Netlify&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;Pre-requisites: Create an account on &lt;a href=""&gt;https://www.netlify.com/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Approach 1&lt;/strong&gt;:
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Step 1&lt;/strong&gt;: Drag &amp;amp; Drop build/web folder to dashboard&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%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2A7khrYud9xY9V2UM3" 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%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2A7khrYud9xY9V2UM3" alt="----------" width="800" height="268"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2&lt;/strong&gt;: The web app will be deployed and the domain will be given to you.&lt;br&gt;
&lt;strong&gt;Step 3 (Optional)&lt;/strong&gt;: The web app can be connected with the custom domain/subdomain.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Approach 2:&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; Use the same peanut pub&lt;/p&gt;

&lt;p&gt;&lt;a href="https://pub.dev/packages/peanut" rel="noopener noreferrer"&gt;peanut | Dart Package&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2&lt;/strong&gt;: Generate web-related files to the &lt;strong&gt;gh-pages&lt;/strong&gt; branch&lt;br&gt;
&lt;strong&gt;Step 3&lt;/strong&gt;: Choose &lt;strong&gt;New site from git&lt;/strong&gt; on the netlify dashboard.&lt;br&gt;
&lt;strong&gt;Step 4&lt;/strong&gt;: Choose the repository &amp;amp; select branch to deploy&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%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2Aj5rHQ5X_xg8ULl_g" 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%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2Aj5rHQ5X_xg8ULl_g" alt="----------" width="800" height="690"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4:&lt;/strong&gt; Deploy Site.&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;#4: Codemagic Static Pages&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Step 1&lt;/strong&gt;: Connect repository to &lt;a href=""&gt;https://codemagic.io/&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Step 2&lt;/strong&gt;: Go to Settings - Publish - Codemagic static pages&lt;br&gt;
&lt;strong&gt;Step 3&lt;/strong&gt;: Choose your custom subdomain&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%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2A96OS6qRm1Pb8xXm5" 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%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2A96OS6qRm1Pb8xXm5" alt="----------" width="800" height="553"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4&lt;/strong&gt;: Trigger a build, on the success, it will be deployed to:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://checklist-app.codemagic.app/#/" rel="noopener noreferrer"&gt;https://sub-domain.codemagic.app/&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;#5: Deploy on AWS S3 (via Codemagic)&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Step 1&lt;/strong&gt;: Log in to your AWS Management Console.&lt;br&gt;
&lt;strong&gt;Step 2&lt;/strong&gt;: Click on your user name at the top right of the page.&lt;br&gt;
&lt;strong&gt;Step 3&lt;/strong&gt;: Click on the Security Credentials link from the drop-down menu.&lt;br&gt;
&lt;strong&gt;Step 4&lt;/strong&gt;: Find the Access Credentials section, and copy the latest Access Key ID.&lt;br&gt;
&lt;strong&gt;Step 5&lt;/strong&gt;: Click on the Show link in the same row, and copy the Secret Access Key.&lt;br&gt;
&lt;strong&gt;Step 6&lt;/strong&gt;: Choose repo on codemagic&lt;br&gt;
&lt;strong&gt;Step 7&lt;/strong&gt;: Go to Settings - Publish - AWS S3 Bucket&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%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2AHW8jcvNYbkekF7BA" 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%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2AHW8jcvNYbkekF7BA" alt="----------" width="800" height="813"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 8&lt;/strong&gt;: Fill the Access key ID, secret access Key, and Bucket name&lt;br&gt;
&lt;strong&gt;Step 9&lt;/strong&gt;: Trigger a build, on the success, it will be deployed to an S3 bucket&lt;/p&gt;

&lt;p&gt;We have enough approaches to deploy/release a Flutter web app, that can be chosen for the QA environment as well as the production releases. Connecting it with CI/CD like Codemagic will reduce the repeating effort of manual deployments.&lt;/p&gt;

</description>
      <category>flutter</category>
      <category>flutterweb</category>
      <category>deployment</category>
      <category>firebase</category>
    </item>
    <item>
      <title>Exploring GraphQL with Flutter </title>
      <dc:creator>Milind Mevada</dc:creator>
      <pubDate>Sun, 09 Jun 2019 05:23:49 +0000</pubDate>
      <link>https://dev.to/solutelabs/exploring-graphql-with-flutter-4mdp</link>
      <guid>https://dev.to/solutelabs/exploring-graphql-with-flutter-4mdp</guid>
      <description>&lt;p&gt;In this Blog post, Let's discuss &lt;strong&gt;Various way available to implement GraphQL with Flutter&lt;/strong&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  First of all, What's this GraphQL?
&lt;/h2&gt;

&lt;p&gt;We are not going in depth about the concept of GraphQL in the post, but here is the short description from an official document&lt;/p&gt;

&lt;p&gt;&lt;em&gt;GraphQL is a query language for APIs and a runtime for fulfilling those queries with your existing data. GraphQL provides a complete and understandable description of the data in your API, gives clients the power to ask for exactly what they need and nothing more, makes it easier to evolve APIs over time, and enables powerful developer tools.&lt;/em&gt; &lt;/p&gt;

&lt;p&gt;GraphQL is developed and now open sourced by the tech team of Facebook, which is a different way to implement APIs in your application. &lt;em&gt;Let's see how we implement this with Flutter&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How I will manage this on Flutter?
&lt;/h2&gt;

&lt;p&gt;While you can use normal HTTP GET request to execute Graph Query, Flutter has some cool pubs available which manage this stuffs and make developer's job easy.&lt;/p&gt;

&lt;p&gt;If you look for GraphQL client for Flutter, there are good options available like &lt;a href="https://pub.dev/packages/graphql_flutter#-readme-tab-"&gt;graphql_flutter&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;graphql_flutter pub provides a Widget level implementation for Graph Query.&lt;br&gt;
For Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight dart"&gt;&lt;code&gt;&lt;span class="n"&gt;Query&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;
  &lt;span class="nl"&gt;options:&lt;/span&gt; &lt;span class="n"&gt;QueryOptions&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;
    &lt;span class="nl"&gt;document:&lt;/span&gt; &lt;span class="n"&gt;readRepositories&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// this is a Graph Query&lt;/span&gt;
    &lt;span class="nl"&gt;variables:&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
      &lt;span class="s"&gt;'nRepositories'&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
    &lt;span class="o"&gt;},&lt;/span&gt;
    &lt;span class="nl"&gt;pollInterval:&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
  &lt;span class="o"&gt;),&lt;/span&gt;
  &lt;span class="nl"&gt;builder:&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;QueryResult&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="n"&gt;VoidCallback&lt;/span&gt; &lt;span class="n"&gt;refetch&lt;/span&gt; &lt;span class="o"&gt;})&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;errors&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;Text&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;errors&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;toString&lt;/span&gt;&lt;span class="o"&gt;());&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;loading&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;Text&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'Loading'&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;

    &lt;span class="c1"&gt;// it can be either Map or List&lt;/span&gt;
    &lt;span class="n"&gt;List&lt;/span&gt; &lt;span class="n"&gt;repositories&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;data&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s"&gt;'viewer'&lt;/span&gt;&lt;span class="o"&gt;][&lt;/span&gt;&lt;span class="s"&gt;'repositories'&lt;/span&gt;&lt;span class="o"&gt;][&lt;/span&gt;&lt;span class="s"&gt;'nodes'&lt;/span&gt;&lt;span class="o"&gt;];&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;ListView&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;builder&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;
      &lt;span class="nl"&gt;itemCount:&lt;/span&gt; &lt;span class="n"&gt;repositories&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;length&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
      &lt;span class="nl"&gt;itemBuilder:&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="kd"&gt;final&lt;/span&gt; &lt;span class="n"&gt;repository&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;repositories&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="o"&gt;];&lt;/span&gt;

        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;Text&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;repository&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s"&gt;'name'&lt;/span&gt;&lt;span class="o"&gt;]);&lt;/span&gt;
    &lt;span class="o"&gt;});&lt;/span&gt;
  &lt;span class="o"&gt;},&lt;/span&gt;
&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;This is a very high-level widget implementation which will manage the networking from Widget itself.&lt;/p&gt;
&lt;h2&gt;
  
  
  But, How I will separate the Network layer in my App? 🤷
&lt;/h2&gt;

&lt;p&gt;Yes!, This is what we also questioned. As we are using BLoC architecture in one of our Flutter application, this implementation was surely not granular to suits.&lt;/p&gt;

&lt;p&gt;To answer this question, We analyzed the internal implementation of this pub. Here is the outcome.&lt;/p&gt;
&lt;h2&gt;
  
  
  Implement GraphQL on BLoC way
&lt;/h2&gt;

&lt;p&gt;Here is a nice pub available &lt;a href="https://pub.dev/packages/graphql"&gt;graphql_client&lt;/a&gt;. This is the same pub which has been used underlying by &lt;a href="https://pub.dev/packages/graphql_flutter#-readme-tab-"&gt;graphql_flutter&lt;/a&gt;. By this, we should be able to separate a network layer in App&lt;/p&gt;

&lt;p&gt;Let us take an example of &lt;a href="https://developer.github.com/v4/"&gt;Github Graph API&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let's dive into the code directly&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Step 1: Basic Setup
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre class="highlight dart"&gt;&lt;code&gt;&lt;span class="c1"&gt;//Provide a Base URL&lt;/span&gt;
&lt;span class="kd"&gt;final&lt;/span&gt; &lt;span class="n"&gt;HttpLink&lt;/span&gt; &lt;span class="n"&gt;_httpLink&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;HttpLink&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;
  &lt;span class="nl"&gt;uri:&lt;/span&gt; &lt;span class="s"&gt;'https://api.github.com/graphql'&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
&lt;span class="o"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;//Provide authentication, this will go as a Header in Request&lt;/span&gt;
&lt;span class="kd"&gt;final&lt;/span&gt; &lt;span class="n"&gt;AuthLink&lt;/span&gt; &lt;span class="n"&gt;_authLink&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;AuthLink&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;
  &lt;span class="nl"&gt;getToken:&lt;/span&gt; &lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="n"&gt;async&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;'Bearer &lt;/span&gt;&lt;span class="si"&gt;$GITHUB_TOKEN&lt;/span&gt;&lt;span class="s"&gt;'&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
&lt;span class="o"&gt;);&lt;/span&gt;

&lt;span class="kd"&gt;final&lt;/span&gt; &lt;span class="n"&gt;Link&lt;/span&gt; &lt;span class="n"&gt;_link&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;_authLink&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;concat&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;_httpLink&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;Link&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

&lt;span class="n"&gt;GraphQLClient&lt;/span&gt; &lt;span class="n"&gt;_client&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// Create a common client for further requests&lt;/span&gt;
&lt;span class="n"&gt;GraphQLClient&lt;/span&gt; &lt;span class="nf"&gt;getGraphQLClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
  &lt;span class="n"&gt;_client&lt;/span&gt; &lt;span class="o"&gt;??=&lt;/span&gt; &lt;span class="n"&gt;GraphQLClient&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;
    &lt;span class="nl"&gt;link:&lt;/span&gt; &lt;span class="n"&gt;_link&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
    &lt;span class="nl"&gt;cache:&lt;/span&gt; &lt;span class="n"&gt;InMemoryCache&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;storageProvider:&lt;/span&gt; &lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;getTemporaryDirectory&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt; &lt;span class="c1"&gt;// Provide a cache mechanism&lt;/span&gt;
    &lt;span class="o"&gt;}),&lt;/span&gt;
  &lt;span class="o"&gt;);&lt;/span&gt;

  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;_client&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;Step 2: Repository Layer
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre class="highlight dart"&gt;&lt;code&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;GitHubRepoProvider&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
&lt;span class="c1"&gt;// method will give us Data model&lt;/span&gt;
  &lt;span class="n"&gt;Future&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;GithubRepo&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;getCurrentUserRepos&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;getGraphQLClient&lt;/span&gt;&lt;span class="o"&gt;().&lt;/span&gt;&lt;span class="na"&gt;query&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;_queryOptions&lt;/span&gt;&lt;span class="o"&gt;()).&lt;/span&gt;&lt;span class="na"&gt;then&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;_toGitHubRepo&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
  &lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// provides Graph Query options, we can provide the optional variable here&lt;/span&gt;
  &lt;span class="n"&gt;QueryOptions&lt;/span&gt; &lt;span class="n"&gt;_queryOptions&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;QueryOptions&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;
      &lt;span class="nl"&gt;document:&lt;/span&gt; &lt;span class="n"&gt;readRepositories&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
      &lt;span class="nl"&gt;variables:&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kt"&gt;String&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="kd"&gt;dynamic&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;{&lt;/span&gt;
        &lt;span class="s"&gt;'nRepositories'&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
      &lt;span class="o"&gt;},&lt;/span&gt;
    &lt;span class="o"&gt;);&lt;/span&gt;
  &lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// parse JSON to Data model&lt;/span&gt;
  &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;GithubRepo&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;_toGitHubRepo&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;QueryResult&lt;/span&gt; &lt;span class="n"&gt;queryResult&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;queryResult&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;hasErrors&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="n"&gt;Exception&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;

    &lt;span class="kd"&gt;final&lt;/span&gt; &lt;span class="n"&gt;list&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;
        &lt;span class="n"&gt;queryResult&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;data&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s"&gt;'viewer'&lt;/span&gt;&lt;span class="o"&gt;][&lt;/span&gt;&lt;span class="s"&gt;'repositories'&lt;/span&gt;&lt;span class="o"&gt;][&lt;/span&gt;&lt;span class="s"&gt;'nodes'&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kd"&gt;dynamic&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;;&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;list&lt;/span&gt;
        &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;map&lt;/span&gt;&lt;span class="o"&gt;((&lt;/span&gt;&lt;span class="n"&gt;repoJson&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;GithubRepo&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;fromJson&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;repoJson&lt;/span&gt;&lt;span class="o"&gt;))&lt;/span&gt;
        &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;toList&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;growable:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
  &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// Graph Query to get repository of current user&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="kt"&gt;String&lt;/span&gt; &lt;span class="n"&gt;_readRepositories&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sx"&gt;r''&lt;/span&gt;&lt;span class="s"&gt;'
  query ReadRepositories(&lt;/span&gt;&lt;span class="si"&gt;$nRepositories&lt;/span&gt;&lt;span class="s"&gt;: Int!) {
    viewer {
      repositories(last: &lt;/span&gt;&lt;span class="si"&gt;$nRepositories&lt;/span&gt;&lt;span class="s"&gt;) {
        nodes {
          name
          createdAt
          forkCount
        }
      }
    }
  }
'''&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Bingo 👍. We now have a Data model. Covert your DataModel into ViewModel from the BLoC 😉&lt;/p&gt;

&lt;p&gt;You can see the full working demo Application here 👇. (Don't forget to edit &lt;code&gt;config.dart&lt;/code&gt; file to add your Github API token)&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vJ70wriM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/milind-mevada-stl"&gt;
        milind-mevada-stl
      &lt;/a&gt; / &lt;a href="https://github.com/milind-mevada-stl/Flutter-GraphQL-Demo"&gt;
        Flutter-GraphQL-Demo
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      This Project shows demo of GraphQL implementation in Flutter
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
Flutter GraphQL Demo &lt;a href="https://travis-ci.org/milind-mevada-stl/Flutter-GraphQL-Demo" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/48a4379175a76673ad7dd206b83aa64b2f74e0af/68747470733a2f2f7472617669732d63692e6f72672f6d696c696e642d6d65766164612d73746c2f466c75747465722d4772617068514c2d44656d6f2e7376673f6272616e63683d6d6173746572" alt="Build Status"&gt;&lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;This application shows demo of GraphQL implementation in Flutter using
&lt;a href="https://pub.dev/packages/graphql" rel="nofollow"&gt;GraphQL Client&lt;/a&gt;. Checkout more on our blog post &lt;a href="https://dev.to/solutelabs/exploring-graphql-with-flutter-4mdp" rel="nofollow"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;
Getting Started&lt;/h2&gt;
&lt;p&gt;Clone and edit &lt;code&gt;config.dart&lt;/code&gt; file, Add your personalized Github API token to get started.&lt;/p&gt;
&lt;/div&gt;

  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/milind-mevada-stl/Flutter-GraphQL-Demo"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;



&lt;p&gt;Provide your ideas/suggestions in the comment section or hit me a tweet 👉 &lt;br&gt;
&lt;/p&gt;
&lt;blockquote class="ltag__twitter-tweet"&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--Pvn2OuNz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/873897282432671745/qnv0g8hC_normal.jpg" alt="Milind Mevada profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Milind Mevada
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        &lt;a class="comment-mentioned-user" href="https://dev.to/milindmevada"&gt;@milindmevada&lt;/a&gt;

      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__twitter-logo"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--P4t6ys1m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/twitter-f95605061196010f91e64806688390eb1a4dbc9e913682e043eb8b1e06ca484f.svg" alt="twitter logo"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__body"&gt;
      Exploring &lt;a href="https://twitter.com/hashtag/GraphQL"&gt;#GraphQL&lt;/a&gt; on &lt;a href="https://twitter.com/hashtag/Flutter"&gt;#Flutter&lt;/a&gt;. Using GraphQL client pub.&lt;br&gt;&lt;br&gt;Here is a sample demo application &lt;a href="https://t.co/Hok8XJw51w"&gt;github.com/milind-mevada-…&lt;/a&gt;&lt;br&gt;&lt;br&gt;Thanks &lt;a href="https://twitter.com/SmitSonani"&gt;@SmitSonani&lt;/a&gt; for quick code review. &lt;br&gt;&lt;br&gt;&lt;a href="https://twitter.com/FlutterDev"&gt;@FlutterDev&lt;/a&gt; &lt;a href="https://twitter.com/FlutterAHM"&gt;@FlutterAHM&lt;/a&gt; &lt;a href="https://twitter.com/FlutterComm"&gt;@FlutterComm&lt;/a&gt; &lt;a href="https://twitter.com/r_FlutterDev"&gt;@r_FlutterDev&lt;/a&gt; &lt;a href="https://twitter.com/FlutterWk"&gt;@FlutterWk&lt;/a&gt; &lt;a href="https://twitter.com/dart_lang"&gt;@dart_lang&lt;/a&gt; &lt;a href="https://twitter.com/prasadsunny1"&gt;@prasadsunny1&lt;/a&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      09:50 AM - 30 May 2019
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1134034323772887040" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-reply-action.svg" alt="Twitter reply action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/retweet?tweet_id=1134034323772887040" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-retweet-action.svg" alt="Twitter retweet action"&gt;
      &lt;/a&gt;
      1
      &lt;a href="https://twitter.com/intent/like?tweet_id=1134034323772887040" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-like-action.svg" alt="Twitter like action"&gt;
      &lt;/a&gt;
      13
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;


</description>
      <category>flutter</category>
      <category>graphql</category>
      <category>dart</category>
    </item>
    <item>
      <title>Flutter &amp; Dart From Google I/O '19</title>
      <dc:creator>Milind Mevada</dc:creator>
      <pubDate>Mon, 03 Jun 2019 05:35:27 +0000</pubDate>
      <link>https://dev.to/solutelabs/flutter-dart-from-google-i-o-19-2l50</link>
      <guid>https://dev.to/solutelabs/flutter-dart-from-google-i-o-19-2l50</guid>
      <description>&lt;p&gt;This year the developer community was undoubtedly anticipated for Flutter announcement from Google I/O '19 and YES 🤩 Google didn't disappoint them. 🤟&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Here are the top announcements Google made for Flutter&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Flutter 1.5 on Stable Channel 🎉
&lt;/h2&gt;

&lt;p&gt;Flutter the core framework receives an upgrade during I/O '19. This release includes hundreds of changes from the response of developer feedback. It also includes the update to Material and Cupertino widgets.&lt;br&gt;
As the framework becomes more mature Google is now investing in building supporting ecosystem, as part of that initial support to the &lt;a href="https://pub.dev/packages/in_app_purchase" rel="noopener noreferrer"&gt;in-app purchase&lt;/a&gt; lands on Flutter. &lt;a href="https://github.com/firebase/mlkit-custom-image-classifier" rel="noopener noreferrer"&gt;ML Kit Custom Image Classifier&lt;/a&gt; also announced which is built using Flutter and Firebase.&lt;/p&gt;

&lt;h2&gt;
  
  
  Flutter: Now for all the Screens 😍
&lt;/h2&gt;

&lt;p&gt;The best framework for developing beautiful experiences now supports &lt;strong&gt;Mobile, Web, Desktop, and Embedded device.&lt;/strong&gt; And all this using &lt;strong&gt;Single Codebase.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Flutter has provided an &lt;a href="https://github.com/flutter/flutter/wiki/Custom-Flutter-Engine-Embedders" rel="noopener noreferrer"&gt;embedding API&lt;/a&gt; which allows Flutter to be used in scenarios like home 🏠, automotive 🚗 and beyond. There is already a sample published to demonstrate &lt;a href="https://medium.com/flutter/flutter-on-raspberry-pi-mostly-from-scratch-2824c5e7dcb1" rel="noopener noreferrer"&gt;Flutter on Raspberry-pi.&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Flutter for the Web 🌐
&lt;/h2&gt;

&lt;p&gt;In this Google I/O first &lt;strong&gt;Technical Preview of Flutter for the Web&lt;/strong&gt; was released. While this is still in development, but it’s already available for the developer community to try, build and provide early feedback. The community didn’t wait to try this out, See the sneak peeks &lt;a href="https://www.nytimes.com/games/prototype/kenken#/" rel="noopener noreferrer"&gt;here&lt;/a&gt;, &lt;a href="https://medium.com/reflectly-engineering/reflectly-from-mobile-to-web-in-less-than-4-beers-2040c0c0a4c7?sk=9943357d5d896493cab5c19723c9c107" rel="noopener noreferrer"&gt;here&lt;/a&gt; and lots of other &lt;a href="https://flutter.github.io/samples/?utm_source=flutter_github_io&amp;amp;utm_medium=Redirect&amp;amp;utm_content=meta_refresh" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Dart 2.3: Flutter’s language featuring UI-as-code 💻
&lt;/h2&gt;

&lt;p&gt;With Flutter 1.5 Dart 2.3 is also available now. which has to offer us reach features like &lt;a href="https://github.com/munificent/ui-as-code" rel="noopener noreferrer"&gt;ui-as-code&lt;/a&gt;, &lt;a href="https://dart.dev/guides/language/language-tour" rel="noopener noreferrer"&gt;spread operator&lt;/a&gt;, &lt;a href="https://dart.dev/guides/language/language-tour" rel="noopener noreferrer"&gt;collection if&lt;/a&gt; and &lt;a href="https://dart.dev/guides/language/language-tour" rel="noopener noreferrer"&gt;collection for&lt;/a&gt;.&lt;br&gt;
With all these luxury features Dart is indeed a better Language for UI.&lt;/p&gt;

&lt;p&gt;Check out all latest Dart features &lt;a href="https://medium.com/dartlang/making-dart-a-better-language-for-ui-f1ccaf9f546c" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  See what has been made with 5 KB or less code of Dart 😉
&lt;/h2&gt;

&lt;p&gt;The Google team had challenged the community to build something unique with less than 5 KB of dart code. The winners of the challenge announced during I/O event and here are the eye-catching &lt;a href="https://flutter.dev/create" rel="noopener noreferrer"&gt;results&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Promising? Do you want to Start learning Flutter? ✅
&lt;/h2&gt;

&lt;p&gt;Google has announced a comprehensive &lt;a href="https://www.appbrewery.co/p/flutter-development-bootcamp-with-dart/" rel="noopener noreferrer"&gt;new training course for Flutter&lt;/a&gt; to start learning Flutter from &lt;a href="https://www.appbrewery.co/" rel="noopener noreferrer"&gt;The App Brewery team&lt;/a&gt;. The course has contents for Flutter which includes videos, demos, and code labs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Now Fastest Growing Skill among Software Engineers 🥳
&lt;/h2&gt;

&lt;p&gt;Last but not least, According to a recently conducted &lt;a href="https://learning.linkedin.com/blog/tech-tips/the-fastest-growing-skills-among-software-engineers--and-how-to-" rel="noopener noreferrer"&gt;study by Linkedin&lt;/a&gt; Flutter is the fastest Growing Skill among Software Engineers.&lt;/p&gt;

</description>
      <category>flutter</category>
      <category>dart</category>
      <category>googleio</category>
      <category>flutterweb</category>
    </item>
  </channel>
</rss>
