<?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: tkpranav</title>
    <description>The latest articles on DEV Community by tkpranav (@tkpranav).</description>
    <link>https://dev.to/tkpranav</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%2F395723%2Fe2ce3bb9-7f56-469f-ae39-11ba83e84acf.png</url>
      <title>DEV Community: tkpranav</title>
      <link>https://dev.to/tkpranav</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tkpranav"/>
    <language>en</language>
    <item>
      <title>Speed up your image heavy website…</title>
      <dc:creator>tkpranav</dc:creator>
      <pubDate>Thu, 02 Jul 2020 17:15:05 +0000</pubDate>
      <link>https://dev.to/tkpranav/speed-up-your-image-heavy-website-40h5</link>
      <guid>https://dev.to/tkpranav/speed-up-your-image-heavy-website-40h5</guid>
      <description>&lt;h3&gt;
  
  
  Speed up your image heavy website.
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WKYcVt2m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/0%2Ag8q0f23In8w-nyuQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WKYcVt2m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/0%2Ag8q0f23In8w-nyuQ.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Resize your image
&lt;/h3&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;img src="image.jpg" alt="full size image" width="200" height="200"/&amp;gt;

&amp;lt;img src="resized\_200x200\_image.jpg" alt="resized image"/&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5jEsHAUI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/452/1%2AWgjPF4KVMY2Kn53UFl481Q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5jEsHAUI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/452/1%2AWgjPF4KVMY2Kn53UFl481Q.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Optimize your image
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;JPG&lt;/strong&gt; , &lt;strong&gt;PNG&lt;/strong&gt; and &lt;strong&gt;GIF&lt;/strong&gt; are the most common image formats being used currently&lt;br&gt;&lt;br&gt;
on the web. There is another relatively new image format called &lt;strong&gt;WebP&lt;/strong&gt; that&lt;br&gt;&lt;br&gt;
combines the best of these image formats.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Cbyt5A0i--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/564/1%2A6NTgRgmpWg9vBHCn70p9wg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Cbyt5A0i--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/564/1%2A6NTgRgmpWg9vBHCn70p9wg.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Build for mobile
&lt;/h3&gt;

&lt;p&gt;Data suggests that almost 60% of the global traffic originates from mobile&lt;br&gt;&lt;br&gt;
devices. With responsive image tags, using the ‘ &lt;strong&gt;srcset&lt;/strong&gt; ’ and the ‘ &lt;strong&gt;sizes&lt;/strong&gt; ’&lt;br&gt;&lt;br&gt;
attributes of the img tag&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gBpG7ZbZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/597/1%2AgswYRHM_JPjZlZdsk73ZJQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gBpG7ZbZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/597/1%2AgswYRHM_JPjZlZdsk73ZJQ.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Load fewer resources
&lt;/h3&gt;

&lt;p&gt;Use &lt;strong&gt;lazy loading&lt;/strong&gt; for your images. Lazy loading basically means that we&lt;br&gt;&lt;br&gt;
defer loading of images that are not required immediately.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FMygl1D---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cdn-images-1.medium.com/max/1000/1%2Azi11reoH6QFy5njkJYhalQ.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FMygl1D---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cdn-images-1.medium.com/max/1000/1%2Azi11reoH6QFy5njkJYhalQ.gif" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Use a good CDN for image delivery
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LZxw-K4H--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/700/0%2Auu5hju31ZkJAJbhT.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LZxw-K4H--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/700/0%2Auu5hju31ZkJAJbhT.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;




</description>
      <category>html</category>
      <category>imageoptimization</category>
      <category>fastloadimage</category>
      <category>imageloadingspeed</category>
    </item>
    <item>
      <title>How To Validate Forms In Flutter.?</title>
      <dc:creator>tkpranav</dc:creator>
      <pubDate>Mon, 29 Jun 2020 16:51:55 +0000</pubDate>
      <link>https://dev.to/tkpranav/how-to-validate-forms-in-flutter-2bja</link>
      <guid>https://dev.to/tkpranav/how-to-validate-forms-in-flutter-2bja</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--sYNTd3SR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/600/0%2ADMISHEmhHmBD_QX0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sYNTd3SR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/600/0%2ADMISHEmhHmBD_QX0.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  NEED:
&lt;/h4&gt;

&lt;p&gt;To show that something is wrong with the submitted data, we use form validation.&lt;/p&gt;

&lt;p&gt;Widgets Used:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Form&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;TextFormField&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Lets go to the Steps:&lt;/p&gt;

&lt;h4&gt;
  
  
  STEP 1:
&lt;/h4&gt;

&lt;p&gt;Inside your project, add a Scaffold with a Floating Action Button.&lt;/p&gt;

&lt;p&gt;We use this button to submit and validate the form.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ex9gb2XB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/475/1%2AqruHGxQwHMKXCQFFufIB4w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ex9gb2XB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/475/1%2AqruHGxQwHMKXCQFFufIB4w.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jXSKLr4H--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/269/1%2AxHiebXk7MwHzWM7zaIs0BA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jXSKLr4H--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/269/1%2AxHiebXk7MwHzWM7zaIs0BA.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  STEP 2:
&lt;/h4&gt;

&lt;p&gt;Add a Form widget to the body of the Scaffold.Give a global key to this form to validate it from anywhere.&lt;/p&gt;

&lt;p&gt;After that, add two TextFormField’s to the form.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4uV0NwrB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/467/1%2AinEUJICtDuBkuNZGfLmuoQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4uV0NwrB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/467/1%2AinEUJICtDuBkuNZGfLmuoQ.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Zs1_Gppe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/260/1%2AT0shbwCA4SPs7Ll9ddI8eA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Zs1_Gppe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/260/1%2AT0shbwCA4SPs7Ll9ddI8eA.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  STEP 3 :
&lt;/h4&gt;

&lt;p&gt;Apply decoration and onChanged method to these Text Form Fields.&lt;/p&gt;

&lt;p&gt;Then add the validator, which will validate the submitted string.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--36fHg-LW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/517/1%2Aha9gWRyjvHXiJLoL0Vysmw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--36fHg-LW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/517/1%2Aha9gWRyjvHXiJLoL0Vysmw.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--OA9JadT_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/265/1%2A77reGSobrQLSUGx0TU5X_g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--OA9JadT_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/265/1%2A77reGSobrQLSUGx0TU5X_g.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  STEP 4 :
&lt;/h4&gt;

&lt;p&gt;At last, when we press the FAB , we need to validate the form.&lt;/p&gt;

&lt;p&gt;So, inside OnPressed method of FAB, carryout the validation of the form.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--E3rzLYcA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/427/1%2AM5JhmUDcl4cNWIECnwfjJw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--E3rzLYcA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/427/1%2AM5JhmUDcl4cNWIECnwfjJw.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--cP7rj0rm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/264/1%2A2me3ZN5IquG2LyTZ7wJj-w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--cP7rj0rm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/264/1%2A2me3ZN5IquG2LyTZ7wJj-w.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And DONE ..!&lt;/p&gt;




</description>
      <category>flutter</category>
      <category>flutterdeveloper</category>
      <category>flutterloginpage</category>
      <category>formvalidationflutte</category>
    </item>
    <item>
      <title>FLUTTER: 6 excellent ways to implement Image widget</title>
      <dc:creator>tkpranav</dc:creator>
      <pubDate>Sat, 20 Jun 2020 14:09:10 +0000</pubDate>
      <link>https://dev.to/innovationincu/flutter-6-excellent-ways-to-implement-image-widget-25ga</link>
      <guid>https://dev.to/innovationincu/flutter-6-excellent-ways-to-implement-image-widget-25ga</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--uZwkvBp2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1000/0%2As7of7kWnf9fDg4XM.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uZwkvBp2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1000/0%2As7of7kWnf9fDg4XM.jpeg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Flutter Image Widget
&lt;/h3&gt;

&lt;p&gt;You can use the Flutter Image widget in 6 ways such as &lt;strong&gt;FadeInImage&lt;/strong&gt; , &lt;strong&gt;Ink Image&lt;/strong&gt; , &lt;strong&gt;Asset Image&lt;/strong&gt; , &lt;strong&gt;Network Image&lt;/strong&gt; , &lt;strong&gt;Memory Image&lt;/strong&gt; , and &lt;strong&gt;File Image&lt;/strong&gt;. We will see how we can use the Flutter Image widget in a much better way. Image widget is an essential widget in Flutter because without image you cannot develop a beautiful app. Images express the content better than text.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Flutter Network Image
&lt;/h3&gt;

&lt;p&gt;Network Image widget uses the internet to show the image, you can use any URL of an image to display the image. It is better to use Network Image over Asset Image because it reduces the app size, you don’t have to keep any images in the app.&lt;/p&gt;

&lt;p&gt;Now you have to create &lt;strong&gt;main.dart&lt;/strong&gt; file which will be used to demonstrate the all the widget example.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;main.dart&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import 'package:flutter/material.dart';
import 'package:flutter\_image\_widget/image\_widget/assets\_image\_widget.dart';
import 'package:flutter\_image\_widget/image\_widget/fade\_image\_widget.dart';
import 'package:flutter\_image\_widget/image\_widget/file\_image\_widget.dart';
import 'package:flutter\_image\_widget/image\_widget/ink\_image\_widget.dart';
import 'package:flutter\_image\_widget/image\_widget/memory\_image\_widget.dart';
import 'package:flutter\_image\_widget/image\_widget/network\_image\_widget.dart';

void main() {
  runApp(
    MaterialApp(
      theme: ThemeData(primarySwatch: Colors.green),
      debugShowCheckedModeBanner: false,
      home: NetworkImageWidget()
    ),
  );
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;As you can see the main.dart file code, you can replace &lt;strong&gt;NetworkImageWidget()&lt;/strong&gt; from home with our upcoming image widgets and you are ready to run the app. Now create file network_image_widget.dart file, this will be used for network image widget example.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;network_image_widget.dart&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import 'package:flutter/material.dart';

class NetworkImageWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Network Image'),
      ),
      body: Container(
        color: Colors.white,
        padding: EdgeInsets.all(16),
        child: Image.network(
          '[https://toppng.com/uploads/preview/batman-png-11553978541s9xp0sddf1.png](https://toppng.com/uploads/preview/batman-png-11553978541s9xp0sddf1.png)',
          frameBuilder: (BuildContext context, Widget child, int frame,
                  bool wasSynchronouslyLoaded) =&amp;gt;
              wasSynchronouslyLoaded
                  ? child
                  : AnimatedOpacity(
                      child: child,
                      opacity: frame == null ? 0 : 1,
                      duration: const Duration(seconds: 2),
                      curve: Curves.easeOut,
                    ),
          loadingBuilder: (context, child, progress) =&amp;gt; progress == null
              ? child
              : LinearProgressIndicator(
                  valueColor: AlwaysStoppedAnimation&amp;lt;Color&amp;gt;(Colors.red),
                ),
          errorBuilder:
              (BuildContext context, Object exception, StackTrace stackTrace) =&amp;gt;
                  Text('Failed to load image'),

        ),
      ),
    );
  }
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;To display image from URL you have to use &lt;strong&gt;Image.network&lt;/strong&gt; widget, as you can see the above code I have passed the image URL to display the image, apart from URL I have used frameBuilder, loadingBuilder, and errorBuilder. This three property is common to all image widget so I will cover these properties only for network image widget, you do the same with other image widgets.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;frameBuilder&lt;/strong&gt;   &lt;strong&gt;:-&lt;/strong&gt; It will display the image with given animation, I have used an &lt;strong&gt;AnimatedOpacity&lt;/strong&gt; widget this will load the image.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;loadingBuilder :-&lt;/strong&gt; This will display another widget until it finishes to load, I have returned the &lt;strong&gt;LinearProgressIndicator&lt;/strong&gt; widget.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;errorBuilder :-&lt;/strong&gt; If you have used the wrong URL or device is not connected to the internet then you can use this property to display another widget.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Note :- Do not use loadingBuilder and frameBuilder at a same time, loadingBuilder will override the frameBuilder.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Flutter Asset Image
&lt;/h3&gt;

&lt;p&gt;Assets Image widget uses an image from the root directory of your project, before using any image you have to add image path to pubspec.yaml file. I have created an “images” folder inside the project root directory and added a cover.png file.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;pubspec.yaml&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;flutter:

  uses-material-design: true

  # To add assets to your application, add an assets section, like this:
  assets:
    - images/
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Add images folder inside assets tag to access all the images from directory.&lt;/p&gt;

&lt;p&gt;Now create asset_image_widget.dart file to display the images from root directory.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;assets_image_widget.dart&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import 'package:flutter/material.dart';

class AssetsImageWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Asset Image'),
      ),
      body: Container(
        color: Colors.white,
        child: Image.asset(
          'images/cover.png',

        ),
      ),
    );
  }
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Now replace NetworkImageWidget from main.dart file with AssetsImageWidget. You can use frameBuilder, loadingBuilder, and errorBuilder with asset image also. Image used &lt;strong&gt;Image.asset()&lt;/strong&gt; widget to display the image.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Flutter Memory Image
&lt;/h3&gt;

&lt;p&gt;Memory Image widget is best if you want to display base64Image. As said you can use frameBuilder, loadingBuilder, and errorBuilder with &lt;strong&gt;Image.memory()&lt;/strong&gt; widget. Now create memory_image_widget.dart file and replace it in main.dart file from your previous widget and create image_string.dart file to store the base64 format of the image.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;image_string.dart&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const base64Image = 'base64Image string';
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;memory_image_widget.dart&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:flutter\_image\_widget/image\_string.dart';

class MemoryImageWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Memory Image'),
      ),
      body: Container(
        color: Colors.white,
        child: Image.memory(
          base64Decode(base64Image),
        ),
      ),
    );
  }
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;I have used &lt;strong&gt;Image.memory()&lt;/strong&gt; widget to display the base64Image and &lt;strong&gt;base64Decode()&lt;/strong&gt; function is used to decode the string.&lt;/p&gt;

&lt;p&gt;Flutter also supports to Ink Image which will gives the nice and beautiful touch or click effect i.e. ripple effect. You can have ripple effect like Android in Flutter for image widget.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Flutter Ripple Effect on Image
&lt;/h3&gt;

&lt;p&gt;create ink_image_widget.dart file, to achieve the ripple effect on the image, make sure that you have replaced the previous widget with InkImageWidget().&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ink_image_widget.dart&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import 'package:flutter/material.dart';

class InkImageWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Ink Image'),
      ),
      body: Container(
        color: Colors.white,
        child: Material(
          color: Colors.transparent,
          child: Ink.image(
            image: AssetImage('images/cover.png'),
            fit: BoxFit.contain,
            height: 100,
            child: InkWell(
              splashColor: Colors.green.withOpacity(.2),
              onTap: () {},
            ),
          ),
        ),
      ),
    );
  }
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;I have used the &lt;strong&gt;Ink.image()&lt;/strong&gt; widget along with the &lt;strong&gt;Material&lt;/strong&gt; widget to achieve the ripple effect. Note height parameter is important otherwise ripple effect will cover the whole screen.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Flutter FadeInImage Widget
&lt;/h3&gt;

&lt;p&gt;FadeInImage widget is used to display the asset image and memory image with a fade animation. This widget loads the image by fading the placeholder image. Create a file fade_image_widget.dart and replace the previous widget in main.dart with &lt;strong&gt;FadeImageWidget()&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;fade_image_widget.dart&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import 'package:flutter/material.dart';

class FadeImageWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Fade In Image'),
      ),
      body: Container(
        color: Colors.white,
        child: FadeInImage.assetNetwork(
          placeholder: 'images/cover.png',
          image:
              '[https://toppng.com/uploads/preview/batman-png-11553978541s9xp0sddf1.png](https://toppng.com/uploads/preview/batman-png-11553978541s9xp0sddf1.png)',
        ),
      ),
    );
  }
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;I have used &lt;strong&gt;FadeInImage.assetImage()&lt;/strong&gt; widget you can also use &lt;strong&gt;FadeInImage.memoryImage()&lt;/strong&gt; instead of image path you have use base64Image string in memoryImage widget. Placeholder parameter is used to show the static image util it finishes to load the asset image.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Flutter File Image Widget
&lt;/h3&gt;

&lt;p&gt;Flutter has &lt;strong&gt;Image.file()&lt;/strong&gt; widget to display the image from the device, you can use the &lt;a href="https://pub.dev/packages/path_provider"&gt;&lt;strong&gt;path_provider&lt;/strong&gt;&lt;/a&gt; package to get the image path from local storage. Now create file_image_widget.dart file and add it to the main.dart.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;file_image_widget.dart&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import 'dart:io';
import 'package:flutter/material.dart';

class FileImageWidget extends StatelessWidget {

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('File Image'),
      ),
      body: Container(
        color: Colors.white,
        child: Image.file(
          File(
            'Use Path provider get image from local storage',
          ),
        ),
      ),
    );
  }
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;I have used &lt;strong&gt;Image.file()&lt;/strong&gt; widget along with File class to display the image from local storage.&lt;/p&gt;




</description>
      <category>flutter</category>
      <category>flutterwidget</category>
      <category>flutterapp</category>
      <category>flutterimagewidgets</category>
    </item>
    <item>
      <title>FLUTTER : DART CHEAT SHEET- Write Smart Code</title>
      <dc:creator>tkpranav</dc:creator>
      <pubDate>Sat, 20 Jun 2020 06:11:43 +0000</pubDate>
      <link>https://dev.to/innovationincu/flutter-dart-cheat-sheet-write-smart-code-c7j</link>
      <guid>https://dev.to/innovationincu/flutter-dart-cheat-sheet-write-smart-code-c7j</guid>
      <description>&lt;h3&gt;
  
  
  FLUTTER : DART CHEAT SHEET- Write Smart Code
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2xe4ntz1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/0%2AF8P3wko5tlYVuujg.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2xe4ntz1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/0%2AF8P3wko5tlYVuujg.jpg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;While writing a long code for some functionality, you know that there will be an easier way to do it.&lt;/p&gt;

&lt;p&gt;You might find a few of that in this post or maybe a hint.&lt;/p&gt;

&lt;p&gt;This is just the icing, there are many of these functionality pre-built for you.&lt;/p&gt;

&lt;h4&gt;
  
  
  1. Cascades
&lt;/h4&gt;

&lt;p&gt;Normal Way:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--lqhwJ0Kr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/442/1%2Ark1sXp4Tgwer2UqPFce37g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--lqhwJ0Kr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/442/1%2Ark1sXp4Tgwer2UqPFce37g.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Smart Way:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WgrnCfqv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/407/1%2A-XkEfqw7ZCPqF3tnHk6_yw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WgrnCfqv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/407/1%2A-XkEfqw7ZCPqF3tnHk6_yw.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  2. Null -aware operator
&lt;/h4&gt;

&lt;p&gt;Normal Way:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1zvcQWSW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/435/1%2A7DkazdM3uYB00zyVeZxKHg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1zvcQWSW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/435/1%2A7DkazdM3uYB00zyVeZxKHg.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Smart Way:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---hBZrrsY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/444/1%2ACKiWHGl9h4WLdGXSzIOUBQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---hBZrrsY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/444/1%2ACKiWHGl9h4WLdGXSzIOUBQ.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  3. Ternary Operator
&lt;/h4&gt;

&lt;p&gt;Normal Way:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gzjLcpoq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/481/1%2AtWb3rT8220KcNPdwE_iMwg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gzjLcpoq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/481/1%2AtWb3rT8220KcNPdwE_iMwg.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Smart Way:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--i20R4gya--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/442/1%2AYTDK3S-kGKccrPy8Rbt4OA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--i20R4gya--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/442/1%2AYTDK3S-kGKccrPy8Rbt4OA.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  4. Null -aware operator
&lt;/h4&gt;

&lt;p&gt;Normal Way:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--f2sMmDDi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/370/1%2AWOGd8aE95HVJgGKQrenxjw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--f2sMmDDi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/370/1%2AWOGd8aE95HVJgGKQrenxjw.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Smart Way:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XJJKJd_a--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/388/1%2A-ywjNXqXzC3K4vhLoKxc_w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XJJKJd_a--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/388/1%2A-ywjNXqXzC3K4vhLoKxc_w.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  5. Assert Statement
&lt;/h4&gt;

&lt;p&gt;Normal Way:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TLhR_IZD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/469/1%2AUTP5dVnkwz0gyhaL_kqvdg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TLhR_IZD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/469/1%2AUTP5dVnkwz0gyhaL_kqvdg.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Smart Way:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Ic7uJet8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/427/1%2ApO9wmybp4nkbah4jxiBCwg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Ic7uJet8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/427/1%2ApO9wmybp4nkbah4jxiBCwg.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  6. Index in List
&lt;/h4&gt;

&lt;p&gt;Normal Way:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--PvnxnAHR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/509/1%2ApZK2v7j8mZTmn-BCP9BPDQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PvnxnAHR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/509/1%2ApZK2v7j8mZTmn-BCP9BPDQ.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Smart Way:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--CncebqD---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/517/1%2ABJgYszpXEpcJkrahGbRLaw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CncebqD---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/517/1%2ABJgYszpXEpcJkrahGbRLaw.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  7. Getters
&lt;/h4&gt;

&lt;p&gt;Normal Way:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--t8YPOnsm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/397/1%2A3_s3olzgCrAjsGk_hcqBVA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--t8YPOnsm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/397/1%2A3_s3olzgCrAjsGk_hcqBVA.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Smart Way:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ocppnUsq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/387/1%2AZ9fW8SsGx8F6qD5FPKGemQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ocppnUsq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/387/1%2AZ9fW8SsGx8F6qD5FPKGemQ.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  8. Exceptions
&lt;/h4&gt;

&lt;p&gt;Smart Way:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--RZZw00Zs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/440/1%2A9xt8ovvbodaaHJN0lHFPzA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RZZw00Zs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/440/1%2A9xt8ovvbodaaHJN0lHFPzA.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;




</description>
      <category>dartcheatsheet</category>
      <category>flutter</category>
      <category>flutterappdevelopmen</category>
      <category>flutterwidget</category>
    </item>
    <item>
      <title>Flutter : How to draw with custom painter</title>
      <dc:creator>tkpranav</dc:creator>
      <pubDate>Tue, 09 Jun 2020 11:29:27 +0000</pubDate>
      <link>https://dev.to/innovationincu/flutter-how-to-draw-with-custom-painter-2ggi</link>
      <guid>https://dev.to/innovationincu/flutter-how-to-draw-with-custom-painter-2ggi</guid>
      <description>&lt;h3&gt;
  
  
  Flutter : How to draw with custom painter
&lt;/h3&gt;

&lt;h3&gt;
  
  
  What is custom painter ?
&lt;/h3&gt;

&lt;p&gt;Custom painter is used to draw standard as well as custom shapes on the screen and is very powerful, it let’s you draw anything that you can think about.&lt;br&gt;&lt;br&gt;
All you need is a little imagination and a little maths.&lt;/p&gt;

&lt;p&gt;Here is a simple basic quick run so you don’t need to worry about technicalities and get straight to painting.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Z42MK693--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/380/1%2AwYPyLrt-6e1WGul4S0Ip2A.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Z42MK693--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/380/1%2AwYPyLrt-6e1WGul4S0Ip2A.png" alt=""&gt;&lt;/a&gt;Created with custom painter.&lt;/p&gt;

&lt;h4&gt;
  
  
  1.Custom Paint.
&lt;/h4&gt;

&lt;p&gt;In widget tree, we only have to add the &lt;strong&gt;CustomPaint&lt;/strong&gt; widget and give it a painter.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ljtb0VHM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/600/1%2AIDXY6cRoGpMTwGMAicfLTw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ljtb0VHM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/600/1%2AIDXY6cRoGpMTwGMAicfLTw.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  2.Custom Painter.
&lt;/h4&gt;

&lt;p&gt;Create &lt;strong&gt;MyCustomPainter&lt;/strong&gt; class and add two required methods.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aKPAJKU5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/585/1%2ALBSRsJlZmQlRSSKQxucZmA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aKPAJKU5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/585/1%2ALBSRsJlZmQlRSSKQxucZmA.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Paint&lt;/strong&gt; method defines what we want to draw or paint on the canvas.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ShouldRepaint&lt;/strong&gt; method defines when we want to repaint the canvas.&lt;/p&gt;

&lt;p&gt;Shown below is a simple breakdown image of the canvas:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QxZwhV4C--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/554/1%2AC6hen6Bvd2P63bYiq_o2jw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QxZwhV4C--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/554/1%2AC6hen6Bvd2P63bYiq_o2jw.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  3. Draw Circle
&lt;/h4&gt;

&lt;p&gt;To draw a circle specify the center, radius and the color of the circle.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--wNAPRU_5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/596/1%2AjSyTocmENaJp41bL3mvwhA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wNAPRU_5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/596/1%2AjSyTocmENaJp41bL3mvwhA.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2OYNt_03--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/270/1%2AdOQQEVKt0li3kLTWwWfcgQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2OYNt_03--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/270/1%2AdOQQEVKt0li3kLTWwWfcgQ.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  4. Rectangle
&lt;/h4&gt;

&lt;p&gt;To draw a rectangle specify center height and width.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--X5GtYp73--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/592/1%2AkzEdvGYeaGcWeB_u3-POwg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--X5GtYp73--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/592/1%2AkzEdvGYeaGcWeB_u3-POwg.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YWqCWT1X--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/262/1%2AOOkirBcrmnuWPdt-4n3Kfw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YWqCWT1X--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/262/1%2AOOkirBcrmnuWPdt-4n3Kfw.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;




</description>
      <category>flutterwidget</category>
      <category>flutter</category>
      <category>flutterpaint</category>
      <category>flutterappdevelopmen</category>
    </item>
    <item>
      <title>How To Make API Request In Flutter.?</title>
      <dc:creator>tkpranav</dc:creator>
      <pubDate>Tue, 26 May 2020 14:03:00 +0000</pubDate>
      <link>https://dev.to/innovationincu/how-to-make-api-request-in-flutter-2i99</link>
      <guid>https://dev.to/innovationincu/how-to-make-api-request-in-flutter-2i99</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fYtqCxso--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AEnmjF5Rz8RnlItQX2aJpTw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fYtqCxso--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AEnmjF5Rz8RnlItQX2aJpTw.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What all we need ….??
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;http&lt;/strong&gt; package to make the request.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;dart:convert&lt;/strong&gt; to process the response from server.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So now let’s make an App that will make API request to get the List of ToDo’s.&lt;/p&gt;

&lt;p&gt;And then we will display the first ToDo.&lt;/p&gt;

&lt;p&gt;Let’s get into the steps:&lt;/p&gt;

&lt;h4&gt;
  
  
  1. Creating UI.
&lt;/h4&gt;

&lt;p&gt;Create a ListTile , that will show our ToDo and a button which will make API request.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zuWzYbuj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/294/1%2AkxaQIafD7Sbj_iZG2HD1eg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zuWzYbuj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/294/1%2AkxaQIafD7Sbj_iZG2HD1eg.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mFGnWS6h--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/597/1%2ABGJ_N71ZDOkcwp8y4A48Cw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mFGnWS6h--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/597/1%2ABGJ_N71ZDOkcwp8y4A48Cw.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  2. Making Request.
&lt;/h4&gt;

&lt;p&gt;Create a method ,which will make API request.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DD-ufCx4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/206/1%2AqaZ-gr9JCM9Ik5z8fvLZvQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DD-ufCx4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/206/1%2AqaZ-gr9JCM9Ik5z8fvLZvQ.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--SgQyks2O--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/593/1%2ACvF9nfQXKUxK8w2U4_VkbA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SgQyks2O--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/593/1%2ACvF9nfQXKUxK8w2U4_VkbA.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  3. Processing Data.
&lt;/h4&gt;

&lt;p&gt;Now, we have to process the response, so we can use it easily.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HlbO_PJk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/191/1%2AytEJcC0LEDppZIqjsK3-NQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HlbO_PJk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/191/1%2AytEJcC0LEDppZIqjsK3-NQ.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--sxz9tdzf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/588/1%2AzlGK2w5jA4PcJVQ5hXJQBw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sxz9tdzf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/588/1%2AzlGK2w5jA4PcJVQ5hXJQBw.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  4.Updating UI
&lt;/h4&gt;

&lt;p&gt;Update the UI with received data.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4o-CwyjW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/191/1%2AzhPcN9fWFNMGeO3Mk1XCYw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4o-CwyjW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/191/1%2AzhPcN9fWFNMGeO3Mk1XCYw.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4NcP8ixj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/589/1%2A0t63Em41rJkQPNhTCeGqhQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4NcP8ixj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/589/1%2A0t63Em41rJkQPNhTCeGqhQ.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  5. Functionality
&lt;/h4&gt;

&lt;p&gt;At last, add functionality to the Raised Button&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qMcZvhok--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/297/1%2AsmSrWJD1PtIQZJ3r4Hi8Yg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qMcZvhok--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/297/1%2AsmSrWJD1PtIQZJ3r4Hi8Yg.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--BlqlO3t1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/595/1%2Ao-30NSjPOuDm8IV0iQHtyw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BlqlO3t1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/595/1%2Ao-30NSjPOuDm8IV0iQHtyw.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The URL i have used above provides dummy API’s for trial&lt;/p&gt;

&lt;p&gt;Also don’t forget to mention the http package in the pubspec.yaml file.&lt;/p&gt;




</description>
      <category>flutterdevelopment</category>
      <category>api</category>
      <category>flutterapp</category>
      <category>flutterapi</category>
    </item>
    <item>
      <title>Why you should choose/ consider to move to Flutter?</title>
      <dc:creator>tkpranav</dc:creator>
      <pubDate>Fri, 15 May 2020 12:44:35 +0000</pubDate>
      <link>https://dev.to/innovationincu/why-you-should-choose-consider-to-move-to-flutter-i3h</link>
      <guid>https://dev.to/innovationincu/why-you-should-choose-consider-to-move-to-flutter-i3h</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--CRgOS6i6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AzUnZjlh1eETyF9w0AR5OKQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CRgOS6i6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AzUnZjlh1eETyF9w0AR5OKQ.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At present the rate at which Flutter apps are published on Google Play continues to increase. Flutter is becoming a hot topic and, whether you decide to use it or not, if you want to develop or improve your mobile app, you should be aware of what Flutter is, as well as what pros &amp;amp; risks it carries. Let’s go for a quick roundup.&lt;/p&gt;

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

&lt;p&gt;Flutter is Google’s mobile app SDK, complete with a framework, widgets, and tools, that gives developers an easy way to build and deploy visually attractive, fast mobile apps on both Android and iOS platforms.Flutter enables a smooth and easy cross-platform mobile app development.&lt;/p&gt;

&lt;p&gt;What’s more, Flutter:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is free and open source,&lt;/li&gt;
&lt;li&gt;Is based on &lt;a href="https://www.dartlang.org/"&gt;Dart&lt;/a&gt; — a fast, object-oriented programming language which is in itself easy to learn,&lt;/li&gt;
&lt;li&gt;Provide its own widgets, drawn with its own high-performance rendering engine. They are fast, pretty, and customizable,&lt;/li&gt;
&lt;li&gt;Thanks to the rich widgets, Flutter apps look and feel great (you can create your own custom app design, but also use readily available UI elements following specific platforms’ guidelines).&lt;/li&gt;
&lt;li&gt;The architecture of Flutter is based on the very popular reactive programming of today (the same that React has been made from)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9VY-5liQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AP0jvTCw4Oci_4goF10H-9g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9VY-5liQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AP0jvTCw4Oci_4goF10H-9g.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Flutter?
&lt;/h3&gt;

&lt;h3&gt;
  
  
  1. Faster code writing
&lt;/h3&gt;

&lt;p&gt;For developers, Flutter means faster &amp;amp; more dynamic mobile app development. We can make changes in the code and see them straight away in the app! This is the so-called &lt;a href="https://flutter.io/hot-reload/"&gt;&lt;em&gt;Hot reload&lt;/em&gt;&lt;/a&gt;, which usually only takes (milli)seconds and helps teams add features, fix bugs, and experiment faster. It is one of the things about Flutter loved by every development team.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--d92WFcPH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/539/1%2AwtnTB5wpjky-Ay8m9jNTAA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--d92WFcPH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/539/1%2AwtnTB5wpjky-Ay8m9jNTAA.png" alt=""&gt;&lt;/a&gt;In other words, with Flutter, your designer or tester can work together with a developer on the UI, making changes — for example, “Put it 2 pixels right” or “Make the animation faster” — and see them immediately.&lt;/p&gt;

&lt;p&gt;Most types of code changes can be hot reloaded. But there is a list of changes that require a full restart: &lt;a href="https://flutter.io/hot-reload/#limitations"&gt;Hot reload Limitations&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Whereas, in the case of native app development the project needs to be rebuilt and that takes much more time. You have to wait for every single change — sometimes, even up to several minutes.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. One code for 2 platforms
&lt;/h3&gt;

&lt;p&gt;Developers write just one codebase for your 2 apps — covering both Android and iOS platforms. Flutter doesn’t depend on the platform, because it has its own widgets and designs. This means that you have the same app on two platforms. Yet what’s important is that if you want to differentiate your apps, it’s possible.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Faster apps
&lt;/h3&gt;

&lt;p&gt;Flutter apps work in a smooth and fast way, without hanging and cutting while scrolling. Also, check out &lt;a href="https://flutter.dev/docs/testing/best-practices"&gt;this amazing page&lt;/a&gt; in the Flutter documentation that talks about best practices for app performance.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Less testing
&lt;/h3&gt;

&lt;p&gt;If you have the same app for 2 platforms, it means less testing! The Quality Assurance process can be faster. Because of one codebase, the developers write automatic tests only once. What’s more, Quality Assurance specialists have less work to do, because they have only one app to check. Of course, if your apps have some differences, they need to be tested on both platforms.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. The same app UI on older devices
&lt;/h3&gt;

&lt;p&gt;Your new app will look the same, even on old versions of &lt;a href="https://www.thedroidsonroids.com/services/android-mobile-app-development"&gt;Android&lt;/a&gt; and &lt;a href="https://www.thedroidsonroids.com/services/ios-mobile-app-development"&gt;iOS&lt;/a&gt; systems. There are no additional costs for supporting older devices. Flutter runs on Android Jelly Bean or newer, as well as iOS 8 or newer.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Perfect for MVP
&lt;/h3&gt;

&lt;p&gt;Do you need an MVP (Minimum Viable Product) for your app to show it to your investors? Flutter will be perfect, especially if you have little time.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5fHvRqRJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AGCX1Zjj2GUAYz5EJglhwhw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5fHvRqRJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AGCX1Zjj2GUAYz5EJglhwhw.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you want to see some apps built with Flutter, check out the &lt;a href="https://play.google.com/store/apps/details?id=io.flutter.demo.gallery"&gt;Flutter Gallery app&lt;/a&gt;, which is a demo of some of Flutter’s features, widgets, and vignettes.&lt;/p&gt;

&lt;h3&gt;
  
  
  7. &lt;strong&gt;Using Dart as a Programming Language&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Dart is an object-oriented programming language which is used for writing mobile application code for Flutter and which contributes to the efficiency and effectiveness of app development flow. It is a comfortable language and uses a lot of CSS parts as well. Dart uses for &lt;strong&gt;&lt;em&gt;generational garbage collection&lt;/em&gt;&lt;/strong&gt; which helps in creating frames for short-lived objects. It also helps to allocate the objects with a single pointer bump to avoid UI jank and shutter.&lt;/p&gt;

&lt;h3&gt;
  
  
  8. The flutter API is very consistant
&lt;/h3&gt;

&lt;p&gt;AnimationBuilder, FutureBuilder, StreamBuilder,…Once you understand them you have no limit. Anything is a widget. A button can use as a screen, a full page used as a button with animation and transformation.&lt;/p&gt;

&lt;h3&gt;
  
  
  9. The customizable kit of widgets
&lt;/h3&gt;

&lt;p&gt;Flutter has built with a rich and customizable set of widgets for Android, IOS and Material Design. The collaboration between Flutter and Google’s material design has rendered and easily create powerful &lt;strong&gt;UI experience.&lt;/strong&gt; This help to create smooth, crisp and refined app experience as are available with a native app.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--sUOqhzh7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2A0Is0d6x7zj9qphtdE_JdOQ.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sUOqhzh7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2A0Is0d6x7zj9qphtdE_JdOQ.gif" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Here are a few apps made using flutter framework:-
&lt;/h4&gt;

&lt;h3&gt;
  
  
  1. Google Ads
&lt;/h3&gt;

&lt;p&gt;With Google Ads, you can view your ad campaign stats like impressions, clicks, conversions, manage your bids on campaigns, get real-time alerts and information and get direct support from Google.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://play.google.com/store/apps/details?id=com.google.android.apps.adwords"&gt;&lt;strong&gt;Google Play Link&lt;/strong&gt;&lt;/a&gt; &lt;strong&gt;|&lt;/strong&gt; &lt;a href="https://apps.apple.com/us/app/google-ads/id1037457231"&gt;&lt;strong&gt;App Store link&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NfKbYKAA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AvwqqpfJgVWUpjP-sA5LRtw.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NfKbYKAA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AvwqqpfJgVWUpjP-sA5LRtw.jpeg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Xianyu by Alibaba
&lt;/h3&gt;

&lt;p&gt;Xianyu is being used by more than &lt;strong&gt;50+ million users regularly&lt;/strong&gt; to buy and sell millions of products from an enormous number of categories of products. It helped connect consumers, making the buying and selling process more natural.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=jtYk3gWRSw0"&gt;https://www.youtube.com/watch?v=jtYk3gWRSw0&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. MedRabbits.
&lt;/h3&gt;

&lt;p&gt;MedRabbits is a Home Healthcare service provider. Which aim to bring fast, convenient and cost effective home healthcare at your doorstep.You can search, sort and book from their curated set of home nurses that specialise in elderly care, maternity care and a lot more.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://play.google.com/store/apps/details?id=com.medrabbits.medrabbits"&gt;&lt;strong&gt;Google Play link&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Fklz_R2g--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/668/1%2AJgBxI49ZHYawRIx_5oQa1g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Fklz_R2g--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/668/1%2AJgBxI49ZHYawRIx_5oQa1g.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Reflectly
&lt;/h3&gt;

&lt;p&gt;Reflectly is an exciting take on a journal app that helps you &lt;strong&gt;store your daily thoughts at one place&lt;/strong&gt; in an orderly manner. Reflectly tries to give you an overview of your past days and &lt;strong&gt;how you’ve improved yourself over time&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://play.google.com/store/apps/details?id=com.reflectlyApp"&gt;&lt;strong&gt;Google Play link&lt;/strong&gt;&lt;/a&gt; &lt;strong&gt;|&lt;/strong&gt; &lt;a href="https://apps.apple.com/us/app/reflectly/id1241229134"&gt;&lt;strong&gt;App Store Link&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--RNevSSlG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1000/1%2AUzHjSGqkMmGpGMh53xT9rQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RNevSSlG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1000/1%2AUzHjSGqkMmGpGMh53xT9rQ.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Watermaniac
&lt;/h3&gt;

&lt;p&gt;Watermaniac is an Android app that helps you keep track of your daily water intake. Using the app, you can set daily goals, know your water intake in the past and be alerted when its time to take the next sip with a notification.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://play.google.com/store/apps/details?id=com.rmzsoft.watermaniac"&gt;&lt;strong&gt;Google Play link&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aGzTIwuw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/644/1%2AOLAEKnuJvhNfdSyRzgAPIA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aGzTIwuw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/644/1%2AOLAEKnuJvhNfdSyRzgAPIA.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Hamilton
&lt;/h3&gt;

&lt;p&gt;Hamilton is the official app for the hit &lt;strong&gt;American Broadway musical&lt;/strong&gt; , showcasing everything related to Hamilton. The app provides all the latest updates about Hamilton, videos, bits of information, daily trivia, fun stickers for chat, access to merchandise and also gives access to its lottery section for its three cities and tour locations.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://play.google.com/store/apps/details?id=com.hamilton.app"&gt;&lt;strong&gt;Google Play link&lt;/strong&gt;&lt;/a&gt; &lt;strong&gt;|&lt;/strong&gt; &lt;a href="https://apps.apple.com/us/app/hamilton-the-official-app/id1255231054"&gt;&lt;strong&gt;App Store link&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rOKKttfH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AmxF392yZqqO9CtwjYGo0xg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rOKKttfH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AmxF392yZqqO9CtwjYGo0xg.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In my opinion, Flutter has many more advantages for business and development teams than risks. It’s a great chance to build beautiful, high-performance and outstanding mobile apps that fit your custom needs and requirements. It’s worth considering Flutter, especially if you want an app both for iOS and Android.&lt;/p&gt;




</description>
      <category>flutterapp</category>
      <category>flutter</category>
      <category>appdevelopment</category>
      <category>crossplatformmobilea</category>
    </item>
    <item>
      <title>Flutter — Installation (Windows/MacOS)</title>
      <dc:creator>tkpranav</dc:creator>
      <pubDate>Fri, 08 May 2020 22:02:05 +0000</pubDate>
      <link>https://dev.to/innovationincu/flutter-installation-windows-macos-326a</link>
      <guid>https://dev.to/innovationincu/flutter-installation-windows-macos-326a</guid>
      <description>&lt;h3&gt;
  
  
  Flutter — Installation (Windows/MacOS)
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--D4rAzw4H--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2A5pPCLEqBWZYrLHNXYfPGAg.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--D4rAzw4H--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2A5pPCLEqBWZYrLHNXYfPGAg.jpeg" alt=""&gt;&lt;/a&gt;Flutter is Google’s UI toolkit for building beautiful, natively compiled applications for &lt;a href="https://flutter.dev/docs"&gt;mobile&lt;/a&gt;, &lt;a href="https://flutter.dev/web"&gt;web&lt;/a&gt;, and &lt;a href="https://flutter.dev/desktop"&gt;desktop&lt;/a&gt; from a single code base.&lt;/p&gt;

&lt;p&gt;This section is a step by step guide for installing Flutter on your local computer.&lt;/p&gt;

&lt;h3&gt;
  
  
  Installation in Windows:
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Step 1&lt;/strong&gt; − Go to URL,&lt;a href="https://flutter.dev/docs/get-started/install/windows"&gt;https://flutter.dev/docs/get-started/install/windows&lt;/a&gt; and download the latest Flutter SDK. The file is flutter_windows_1.17.0-stable.zip.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---7ex8yHq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AWIvR2uRJkOR8cLU6OPxH3w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---7ex8yHq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AWIvR2uRJkOR8cLU6OPxH3w.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2&lt;/strong&gt; − Unzip the zip archive in a folder, say C:\src\flutter\&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3&lt;/strong&gt; −Now update the system path to include flutter bin directory.&lt;/p&gt;

&lt;p&gt;Now to access flutter from any terminal, set the SDK path in environmental variables(type “env” in start menu, go to edit environmental variable. Once the env tab is open select path and click edit. Now add your SDK location: here it would be C:/src/flutter/bin).&lt;/p&gt;

&lt;p&gt;So now open your windows terminal and type “ flutter --version”. This would display your flutter version and details, if not verify the env path you have provided.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4&lt;/strong&gt; − Flutter provides a tool, flutter doctor to check whether all the requirement of flutter development is met.&lt;/p&gt;

&lt;p&gt;Type “flutter doctor” on your prompt and it will display the list of completed installations and the pending or error ones.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--CMUjhmDi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2Aq19eyO5N-U1TgMAC_OAmMQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CMUjhmDi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2Aq19eyO5N-U1TgMAC_OAmMQ.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The report says that all development tools are available but the device is not connected. We can fix this by connecting an android device through USB or starting an android emulator.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 6&lt;/strong&gt; − Install the latest Android SDK, if reported by flutter doctor.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 7&lt;/strong&gt; − Install the latest Android Studio, if reported by flutter doctor.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 8&lt;/strong&gt; − Start an android emulator or connect a real android device to the system.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 9&lt;/strong&gt; − Install Flutter and Dart plugin for Android Studio. It provides startup template to create new Flutter application, an option to run and debug Flutter application in the Android studio itself, etc.,&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open Android Studio.&lt;/li&gt;
&lt;li&gt;Click File → Settings → Plugins.&lt;/li&gt;
&lt;li&gt;Search for Flutter plugin and click Install.&lt;/li&gt;
&lt;li&gt;Click Yes when prompted to install the Dart plugin.&lt;/li&gt;
&lt;li&gt;Restart Android studio.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Installation in MacOS :
&lt;/h3&gt;

&lt;p&gt;To install Flutter on MacOS, follow the following steps :&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1&lt;/strong&gt; − Go to the URL,&lt;a href="https://flutter.dev/docs/get-started/install/macos"&gt;https://flutter.dev/docs/get-started/install/macos&lt;/a&gt; and download latest Flutter SDK. The file is flutter_macos_1.17.0- stable.zip.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2&lt;/strong&gt; − Unzip the zip archive in a folder, say /path/to/flutter&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ cd ~/development
$ unzip ~/Downloads/flutter\_macos\_1.17.0-stable.zip
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;If you don’t want to install a fixed version of the installation bundle, you can skip steps 1 and 2. Instead, get the source code from the &lt;a href="https://github.com/flutter/flutter"&gt;Flutter repo&lt;/a&gt; on GitHub, and change branches or tags as needed. For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ git clone [https://github.com/flutter/flutter.git](https://github.com/flutter/flutter.git) -b stable
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 3&lt;/strong&gt; − Update the system path to include flutter bin directory (in ~/.bashrc file).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ export PATH="$PATH:`pwd`/flutter/bin"
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 4&lt;/strong&gt; − Enable the updated path in the current session using below command and then verify it as well.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;source ~/.bashrc
source $HOME/.bash\_profile
echo $PATH
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Flutter provides a tool, flutter doctor to check whether all the requirement of flutter development is met.&lt;/p&gt;

&lt;h3&gt;
  
  
  Run flutter doctor
&lt;/h3&gt;

&lt;p&gt;Run the following command to see if there are any dependencies you need to install to complete the setup (for verbose output, add the -v flag):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ flutter doctor
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;This command checks your environment and displays a report to the terminal window. The Dart SDK is bundled with Flutter; it is not necessary to install Dart separately. Check the output carefully for other software you might need to install or further tasks to perform (shown in &lt;strong&gt;bold&lt;/strong&gt; text).For example:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MBYatymX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AXZgYPvFzK8CpzIN2CfC8EA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MBYatymX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AXZgYPvFzK8CpzIN2CfC8EA.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5&lt;/strong&gt; − Install latest XCode, if reported by flutter doctor.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 6&lt;/strong&gt; − Install latest Android SDK, if reported by flutter doctor.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 7&lt;/strong&gt; − Install latest Android Studio, if reported by flutter doctor.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 8&lt;/strong&gt; − Start an android emulator or connect a real android device to the system to develop android application.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 9&lt;/strong&gt; − Open iOS simulator or connect a real iPhone device to the system to develop iOS application.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 10&lt;/strong&gt; − Install Flutter and Dart plugin for Android Studio. It provides the startup template to create a new Flutter application, option to run and debug Flutter application in the Android studio itself, etc.,&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open Android Studio&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Preferences → Plugins&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Select the Flutter plugin and click Install&lt;/li&gt;
&lt;li&gt;Click Yes when prompted to install the Dart plugin.&lt;/li&gt;
&lt;li&gt;Restart Android studio.&lt;/li&gt;
&lt;/ul&gt;




</description>
      <category>flutter</category>
      <category>appdevelopment</category>
      <category>flutterappdevelopmen</category>
      <category>flutterinstallation</category>
    </item>
    <item>
      <title>Agora.io: Creating a Basic Video Chat Room.</title>
      <dc:creator>tkpranav</dc:creator>
      <pubDate>Thu, 30 Apr 2020 12:56:23 +0000</pubDate>
      <link>https://dev.to/innovationincu/agora-io-creating-a-basic-video-chat-room-425n</link>
      <guid>https://dev.to/innovationincu/agora-io-creating-a-basic-video-chat-room-425n</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HtJmCc7q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/800/1%2ARwouyic9YxmK_GWtzIhH6A.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HtJmCc7q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/800/1%2ARwouyic9YxmK_GWtzIhH6A.jpeg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this tutorial, I’m showing about how to create your own video chat room with agora.io.&lt;/p&gt;

&lt;p&gt;We all make many Apps websites etc.., Now think about integrating a video chat room in your own app or website. You can do it with the help of agora. Here I will explain a short method to do all the stuff easily.&lt;/p&gt;

&lt;p&gt;First of all what is Agora.io ??&lt;/p&gt;

&lt;p&gt;Agora.io provides a simple and powerful SDK in which you can real-time voice and video communications. We can make the Agora SDK integrate into our websites to enable real-time communications.&lt;/p&gt;

&lt;p&gt;Agora is perfect when embedded in social engagement apps.&lt;/p&gt;

&lt;p&gt;You can also apply animated stickers, magic mirror and color filters. Take control of everything from UI to stream size and support third-party add-ons like filter, encryption, facial recognition, emojis, and more.&lt;/p&gt;

&lt;p&gt;Agora also provides much documentation for developers to use Agora SDKs and sample codes. You can check it &lt;a href="https://docs.agora.io/en"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Agora provides the first 10,000 minutes free each month. It can be customized easily and easy to implement.&lt;/p&gt;

&lt;p&gt;Agora.io mainly Provides,&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Video SDK&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Voice SDK&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Gaming SDK&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;RTM SDK&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Recording Add-on&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.agora.io/en/Agora%20Platform/agora_platform?platform=All%20Platforms"&gt;&lt;strong&gt;Click here&lt;/strong&gt;&lt;/a&gt; &lt;strong&gt;to&lt;/strong&gt; see the Agora Platform Overview.&lt;/p&gt;

&lt;h3&gt;
  
  
  Now Lets Start Building the VideoChat Room
&lt;/h3&gt;

&lt;p&gt;First of all, you should create an account at Agora.io&lt;/p&gt;

&lt;p&gt;&lt;a href="https://console.agora.io/"&gt;&lt;strong&gt;Click here&lt;/strong&gt;&lt;/a&gt; to create an account.&lt;/p&gt;

&lt;p&gt;You can log in with Gmail, Github, Cocos, and even with your email.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--JWphdRW1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/954/1%2A6A_7lKXon8_NpTuQ4QjVxA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--JWphdRW1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/954/1%2A6A_7lKXon8_NpTuQ4QjVxA.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Enter your desired project name and then submit. Now your first project is created.&lt;/p&gt;

&lt;p&gt;we have now created the project to collect the APPID. We will discuss what is APPID and its uses in this Later.&lt;/p&gt;

&lt;p&gt;Now create your own sample website to implement Agora SDK .&lt;/p&gt;

&lt;p&gt;This will be the structure of the Application we are developing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
├── index.html&lt;br&gt;&lt;br&gt;
├── &lt;strong&gt;scripts&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
│ ├── AgoraRTCSDK-3.0.2.js(&lt;em&gt;Version may vary, check the latest version&lt;/em&gt;)&lt;br&gt;&lt;br&gt;
│ └── script.js&lt;br&gt;&lt;br&gt;
└── &lt;strong&gt;styles&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
└── style.css&lt;/p&gt;

&lt;p&gt;You should download the latest Agora.io SDK for the Web. &lt;a href="https://docs.agora.io/en/Agora%20Platform/downloads"&gt;&lt;strong&gt;Click here&lt;/strong&gt;&lt;/a&gt; to Download.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;At First , copy the AgoraRTCSDK-3.0.2.js file which is downloaded to the scripts folder.&lt;/li&gt;
&lt;li&gt;And then set up the index.html file by adding the scripts.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Then set up the page.html file in the same way.&lt;/li&gt;
&lt;li&gt;Next, go to the &lt;a href="https://console.agora.io/"&gt;&lt;strong&gt;Agora.io Console&lt;/strong&gt;&lt;/a&gt; and collect the APP ID.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To get the APP ID, follow these steps&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Navigate in the Dashboard tree on the left to Projects &amp;gt; Project List.&lt;/li&gt;
&lt;li&gt;Save the App ID from the Dashboard&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Now paste the APP ID to the scripts.js folder.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UKh1sG8e--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/872/1%2AoTq9QfU4xoM6hIK4MWCAlg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UKh1sG8e--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/872/1%2AoTq9QfU4xoM6hIK4MWCAlg.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Don’t forget to paste the APP ID you have got. The next step is opening it up.&lt;/p&gt;

&lt;p&gt;Type npx serve in the terminal and create a lite server and open it with that the URL.&lt;/p&gt;

&lt;p&gt;I have shared the Screenshot of my project below :&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ehBkNxuG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2ATLfINdsUwBp4yWEFO139Ng.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ehBkNxuG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2ATLfINdsUwBp4yWEFO139Ng.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now if you guys click the “join for free” button you will be redirected to another page where the microphones and camera permissions are to be provided.&lt;/p&gt;

&lt;p&gt;Your camera will be opened and you can see yourself (if not wait for a few seconds for loading).&lt;/p&gt;

&lt;p&gt;Now paste the same URL on another tab and join.So that we can fake a remote user join.&lt;/p&gt;

&lt;p&gt;And now you would see two faces of yours.(as the remote user is also yourself.)&lt;/p&gt;

&lt;p&gt;So by following these simple steps with the help of agora.io you can implement video chat into your own website successfully.&lt;/p&gt;




</description>
      <category>rtc</category>
      <category>videocalling</category>
      <category>live</category>
      <category>agora</category>
    </item>
  </channel>
</rss>
