Flutter is Google’s UI toolkit for building beautiful, native applications from a single codebase for
- Mobile - Android and iOS
- Desktop - macOS, Chromebook, Windows, and Linux
- Web
Table of Contents
- What Is Flutter?
- More than 15 points of Why to use Flutter
What is Flutter?
It belongs to the category of cross-platform development frameworks and tools that allows developers to build and compile native apps for
- Android and iOS mobiles,
- Desktops including macOS, Chromebook, Windows, and Linux machines
- Web
All of this happens from a single code base.
So we can say that Flutter is a Write once and run anywhere framework for developers.
If you feel lazy to read more text, you can watch a video on the topic below
YouTube:
Why Flutter? Let's understand it with more than 15 points
1. Integration of Flutter with existing Android and iOS apps
It’s sometimes not practical to rewrite your entire application in Flutter all at once. For those situations, Flutter can be integrated into your existing application piecemeal, as a library or module. That module can then be imported into your Android or iOS (currently supported platforms) app to render a part of your app’s UI in Flutter. Or, just to run shared Dart logic.
2. Flutter can be developed on multiple IDEs
- Including the Android Studio which is backed by JetBrains which build the worlds’ best IDE such as IntelliJ, WebStorm, PyCharm, and many more.
- It works perfectly on the VS Code, and those who are not coming from Android Native development, can use the VS Code as the IDE.
3. Flutter has whole suites of web-based tooling of debugging and inspecting Flutter applications
Here are some of the things you can do with DevTools:
- Inspect the UI layout and state of a Flutter app.
- Diagnose UI jank performance issues in a Flutter app.
- CPU profiling for a Flutter or Dart app.
- Network profiling for a Flutter app.
- Source-level debugging of a Flutter or Dart app.
- Debug memory issues in a Flutter or Dart command-line app.
- View general log and diagnostics information about a running Flutter or Dart command-line app.
- Analyze code and app size.
4. Dart is the programming language for Flutter
Because it is optimized for Client development with HOT RELOAD, powered by the DART VM so that developers can iteratively make changes and instantly see changes or results in the app.
5. Dart compiles to native machine code for mobile and desktop, as well as to JavaScript for the web
Whether you’re creating a mobile app
, web app
, command-line script
, or server-side app
, there’s a Dart solution for that.
Flexible compiler technology lets you run Dart code in different ways, depending on your target platform and goals:
-
Dart Native: For programs targeting devices (mobile, desktop, server, and more), Dart Native includes both a Dart VM with
JIT (just-in-time)
compilation and anAOT (ahead-of-time)
compiler for producing machine code. - Dart Web: For programs targeting the web, Dart Web includes both a development time compiler (dartdevc) and a production time compiler (dart2js).
6. Dart and Flutter has conditional UI features that help developers to render UI based on conditions
A flutter package that enhances conditional rendering supports if-else
and switch
conditions
-
if-else
example
class MyWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Column(
children: <Widget>[
Conditional.single(
context: context,
conditionBuilder: (BuildContext context) => someCondition == true,
widgetBuilder: (BuildContext context) => Text('The condition is true!'),
fallbackBuilder: (BuildContext context) => Text('The condition is false!'),
),
],
);
}
}
-
switch
example
class MyWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Column(
children: <Widget>[
ConditionalSwitch.single<String>(
context: context,
valueBuilder: (BuildContext context) => 'A',
caseBuilders: {
'A': (BuildContext context) => Text('The value is A!'),
'B': (BuildContext context) => Text('The value is B!'),
},
fallbackBuilder: (BuildContext context) => Text('None of the cases matched!'),
),
],
);
}
}
7. Compiled code of Flutter is faster than others and it increases performance by 15% for many cases
Flutter is fast. It's powered by the same hardware-accelerated 2D graphics library that underpins Chrome and Android: Skia.
Flutter is architectured to support glitch-free, jank-free graphics at the native speed of your device.
Flutter code is powered by the world-class Dart platform, which enables compilation to 32-bit and 64-bit ARM machine code for iOS and Android, as well as JavaScript for the web and Intel x64 for desktop devices.
8. Flutter is an open-source product
Open Source Community is the major source of feedback, documentation, and code contributions.
Flutter on Github
9. Fastest growing skill among software engineers
And Linked data says that Flutter is the fastest-growing skill among software engineers.
Read more about it here.
10. Shared UI and Business logic for all platforms
To illustrate, here’s an example of how UI rendering looks like in most cross-platform frameworks:
This kind of rendering process makes building an app that looks native on every platform simple. But the devil’s in the details.
Relying on platform-specific components for rendering provokes a need for a property mapping layer for the platform widget and a framework widget data synchronization. That’s what requires mapping every animation into a platform-specific widget call. So much more complicated than it needs to be, right?
In contrast, Flutter doesn’t need any platform-specific UI components to render it’s UI. The only thing Flutter needs to show the application UI is a canvas to draw onto. And here’s how it looks like:
11. Reduced Code Development Time
- Flutter offers stateful hot reload, allowing you to make changes to your code and see the results instantly without restarting your app or losing its state.
- Wide variety of ready-to-use widgets
- In addition to numerous core layout widgets, Flutter provides a large set of Material and Cupertino widgets that perfectly mimic the behavior of each design language.
12. Native App Performance
Application performance is crucial for good UX. While it’s hard to tell the exact figures, it’s safe to say that Flutter application performance in most cases will be indistinguishable from the native app and even better in complex UI animation scenarios.
Why?
Contrary to the approach of most cross-platform frameworks, Flutter doesn’t rely on any intermediate code representations or interpretation.
Flutter application is built directly into the machine code, which eliminates any performance bugs of the interpretation process.
Eventually, you get your release application fully compiled ahead of time with Flutter.
13. Custom, Animated UI of Any Complexity Available
One of the biggest advantages of Flutter is the ability to customize anything you see on the screen, regardless of how complex it may be.
Flutter makes the process more flexible and versatile without adding to the workload. Shared element transitions, shape/color/shadow manipulations, clipping, transformations – Flutter allows you to perform all of these effortlessly
14. Own Rendering Engine
Flutter uses Skia for rendering itself onto a platform-provided canvas. Because of the engine, UI built-in Flutter can be launched on virtually any platform.
Putting it differently, you no longer have to adjust UI to transfer it to a platform, which simplifies the development process hugely.
15. Simple Platform-Specific Logic Implementation
Besides the UI, many real-life mobile applications rely on advanced OS-level features, such as fetching GPS coordinates, Bluetooth communication, gathering sensor data, permission handling, working with credentials, etc.
Many of these are available when developing a Flutter application through a ready-to-use plugin supported by Google.
Flutter provides an easy to use way of establishing the communication between platform-native code and Dart through platform channels. This way, you can implement anything that a native app can do on a Flutter app, with just a little extra effort on the native side.
16 The Potential Ability to Go Beyond Mobile
With Flutter, you can go far beyond Flutter app development on mobile.
There’s also Flutter for Web and Flutter Desktop Embeddings now.
Originally posted on https://ankitkumar.dev
Further Reading
Also, to be notified about my new articles and stories:
Subscribe to my YouTube Channel
Follow me on Medium, Github, and Twitter.
You can find me on LinkedIn as well.
I am quite active on Dev Community as well and write small topics over there.
Cheers!!! Happy coding!!
Top comments (3)
Would be really awesome if Flutter was better for web. My tests with it were not so promising so far. Unfortunately quite slow and the basic feature of the web to copy/select text with the mouse does not work. :(
Edit:
otherwise, i actually find the technology quite interesting. It's just a shame that Typescript wasn't simply used as the programming language. Dart is not bad (especially as DSL language, e.g. for markup), but now I have to learn a new programming language again...
Sorry to know that.
I haven't yet tried it for web. But it works great on mobile until now.
Yes, for mobile it looks great.