⬆️ ⬇️

How to convince a client or company to use Flutter

Hi, Habr! I present to you the translation from English. articles Pitching Flutter to your company or client (by Wm Leler )



More than a year has passed since the publication of the article What's Revolutionary about Flutter (and this material is still relevant). When I wrote that article, only a few mobile developers have heard of Flutter, but much has changed since then. Now I don’t have time to follow the stream of new articles and videos that appear in this active and constantly evolving community. The developers have discovered Flutter for themselves , and they are crazy about it . Here is an example of an application from Reflectly created using Flutter :





Reflectly smart diary application



I often hear from developers how difficult it is to convince company managers — or customers, if it’s about an agency or freelancer — try Flutter. Decision-makers are not ready to switch to the latest technology just because it is advanced. As a rule, they understand the question, but the technology stack is only part of their work. They need to know that using new tools will help their companies become more successful in the market, for example, to attract new consumers or reduce risks.

')

This article is intended for:





This article will also discuss the reasons why Flutter may not be suitable for implementing a particular application, which will help you make an informed decision.



What is Flutter?



Flutter slogan (concise and speaking):

Create aesthetic native applications in record time!


This slogan consists of four parts, each of which must be considered separately:



  1. Create application
  2. Aesthetics
  3. Nativity
  4. Record time


1. Creating an application



Now Flutter is designed for the development of mobile applications for iOS and Android. But the way it is seen in the long term, stands out strongly against the background of existing mobile frameworks: Flutter is not just a framework, it is a full-featured SDK for creating applications that use the screen. This means that Flutter has everything you need to create a user interface, including a visualization tool and elements that require rendering (widgets in Flutter terminology).



Flutter has a lot in common with game engines such as Unity or Unreal , which also provide their own visualization tools. The difference is that Flutter is used to build applications , not games.



The fact that Flutter is a full-featured SDK means that it can be ported to virtually any device that has a display. Flutter renderer uses Skia, a popular open-source graphics engine used on different platforms.





Flutter on the desktop and on the Raspberry Pi



While Google focused on mobile applications, various companies ported Flutter to desktop computers (macOS, Windows, Linux and others), televisions (here you can see how Flutter works on Nvidia Shield TV ), and also on Raspberry Pi. Flutter is used even in building user interfaces for Fuchsia .



Gradually, applications will appear outside mobile phones. Access to applications on several devices, including home assistants (Google Home Hub, Lenovo Smart Display, etc.), interactive displays in cars, home appliances (for example, refrigerators), accessories (watches, clothes) and other IoT will become familiar. -devices.



Already in 2017, 8.4 billion of such devices were registered online, and according to the forecast of International Data Corporation , by 2020 their number will exceed 30 billion (relative to 5 billion mobile phones). However, many of these devices will have interactive displays. Flutter architecture has all the ingredients to create beautiful and functional user interfaces for new devices.





Everywhere screens!



And, of course, Flutter is completely free and has open source.



2. Aesthetics



Is it possible to guarantee the success of your mobile app if it competes with 3.8 million apps on the Google Play Store and 2 million apps on the Apple App Store ? Even if you manage to convince the user to download your application, the chance that he will actively use it 30 days later is only 3%! Consulting company Gartner Inc. stated that only 0.01% of all published applications become financially successful. In this situation, help will not be superfluous.



According to research, having an attractive design plays a huge role . If you look at the most popular mobile applications of the last few years, you will see that each of them has a unique aesthetic appearance. In addition, beautiful applications win awards and get fame, which is especially valuable.





Alibaba (left) and Topline (right)





2Dimensions



Top examples of Flutter applications include applications from Alibaba (the largest e-commerce company in the world), Abbey Road Studios Topline audio recording application, and a demo version of a stunning real-time animation application from 2Dimensions.



More and more companies are seeking their mobile applications to match their corporate branding, just like their website or web applications. This, in turn, requires a high level of customization .



In the end, designers often offer creative ideas that are very blurred by the time they are implemented due to the limitations of the toolkit. Thanks to Flutter, you can implement any design for your application.



Other examples can be found on the official Flutter website, as well as on the It's It's All Widgets website. Among them you will find the Reflectly diary application , which I gave as an example at the beginning of the article. I recommend that you familiarize yourself with this unusual application by downloading it to your Android or Apple smartphone from the app store. Also be sure to read the article about their experience of switching to Flutter .



3. Nativeness



This item must be puzzling for mobile developers. In mobile development, the term “native application” is often used to refer to an application that refers directly to the platform API using specific languages. And, to completely confuse everyone, in such frameworks as React Native and Xamarin, the term “native” means that they can use platform widgets.



In other areas of development, this term does not apply as in mobile. For example, you can install Linux on computers running Windows or macOS (and many others), but you will not call Windows or macOS “native” and Linux “cross-platform” or “hybrid” operating system. We take Linux as native as Windows or macOS, because that's the way it is .



A more precise definition of "nativeness" in the development looks like this:

Intended or embedded in the specified system, especially in the meaning of the language associated with the processor, computer or compiler, as well as programs written in it.
Flutter applications are compiled into native machine ( ARM ) code immediately on iOS and Android.



The advantages of using native applications are more than enough: they start faster and, most importantly, work more stable and less likely to suffer from lags or inhibitions (hanging up is ugly). Moreover, native applications give the developer more control over the behavior of his application.



To get all the benefits of native applications, mobile developers, as a rule, wrote two separate applications using separate toolkits and languages. Often, over such projects have to work two separate teams of developers who are forced to coordinate with each other. This approach significantly increases development costs, increases risks and postpones product release dates. Flutter, on the other hand, allows developers to unite efforts in writing a single code base, unite development teams, reduce risks and speed up the moment of launching an application to the market - all this combined with the advantages of a native application.





Which of these applications is native? Both!



But what about widgets? Due to the fact that Flutter operates with its own widgets , it may seem that applications written on it will look different than applications written on widgets and platform tools.



The top of the GIF animation shows what the settings window looks like, written on iOS compared to the same interface written on Flutter. Despite the slight differences at the pixel level, Flutter seriously simplifies the creation of screens that look and feel like native ones.



We must not forget that even a native application usually looks different depending on the OS version. In fact, Flutter doesn't need to be “pixel perfect”.



Flutter widgets adapt to the target platform, providing the proper appearance of the application, including icons, color palette, markup, fonts, scrolling behavior and much more. The main task of Flutter is to create user-friendly applications, as well as the principles of designing a specific platform.



High quality rendering of applications written in Flutter is ensured by the fact that they are displayed directly on the canvas of the platform. This is possible due to the fact that Flutter has the functionality of a full SDK. Therefore, your application does not depend on changes to widgets, fonts and other elements of the platform.







Using Flutter eliminates the need for support libraries . For example, this Flutter application running on an Android Jelly Bean phone (4.1.2) uses material design widgets, although the phone itself was released two years before its appearance . Of course, the phone has no built-in material design widgets. Be that as it may, your Flutter application will work just like on a more modern device, and will look amazing.



If it were not for Flutter, you would have to solve these problems on your own. This means the need for more thorough testing on older versions of the OS and finding workarounds for platforms that do not provide access to the elements used in the application. We constantly hear from developers that Flutter makes the testing process incredibly easy.



In addition to the advantages of native applications, Flutter has other advantages:







Flutter allows you to do all this using a single code base for both platforms. Or you can add native code for each platform in your Flutter application, if you want.



4. Record dates



Finally, Flutter is also good in that it allows you to develop better applications even faster . The most popular (and HYIP) function Flutter is a hot reboot with saving state . It affects not only speed (takes less than a second), but also state saving, that is, if you change code deep in an application, then after recompilation you will not have to manually recreate the last state of the application to see the result.





Reboot with saving state!



This reload was made possible thanks to the advanced compilation technology (developed by the creators of the V8 compilers for JavaScript and Strongtalk for Smalltalk), and also because Flutter is native and built on reactively updated views.



Along with the acceleration of processes, many developers note that Flutter seriously changes their work style: they can create new layouts in two accounts and make the required changes right in the presence of customers.



We also see a positive effect in the work of designers who get exactly what they need. So, they can play with different parameters until they find the perfect option. And in fact, designers using CSS in web applications claim that it’s easy enough for them to figure out how to make changes to the layout on Flutter on their own.



To learn more about how Flutter works, see this application development record , which was conducted in real time. You can also participate in the hackathon to see how quickly you can learn Flutter and build a working application on it.



As mentioned in the previous paragraph, Flutter applications require fewer tests, which means that you can add new functionality much faster. Here is what JD.com says about its experience with Flutter:

We managed to create the same functionality, using only half of the development team. With the same number of engineers, we can add more features in one release.


Alibaba also notes that using Flutter has reduced the average time to add new functionality from one month to two weeks.





Hamilton app



Speaking of records. In the Hamilton app, the developers made a serious change the evening before the release without a shadow of a doubt about its stability! And this application, written in some three months, was presented in both app stores. In addition, Flutter greatly facilitates the regular addition of new features to warm up the interest of users.



This is how a successful mobile application is created.





Flutter allows you to update widgets as quickly and easily as creating and modifying applications. We often hear concerns that Flutter will be hard to keep up with updates to platform widgets. However, when Apple announced their new iPhone X with its famous cut-out in the screen, Flutter was able to add support for this cut-out even before the start of sales.



And this concerns not only iOS. By the time Google announced a substantially redesigned material design on I / O 2018, Flutter had already received an update to fully implement the new ideas. It was Flutter's ability to customize quickly that made this possible.



We regularly receive feedback from developers who claim that thanks to Flutter, they began to work 2-3 times more efficiently, and their applications as a whole have become more successful.



Risks and restrictions



There are no uncompromising decisions, and Flutter is no exception. Here are some reasons why Flutter might not be the best tool for a particular application.



Due to the fact that Flutter applications contain Flutter widgets and their own visualization tool, they are slightly larger than applications that use tools built into the platform. Until recently, the minimum size of a Flutter application was 6.7MB, but now the size has been reduced to 4MB . We are planning further optimization in the future.



One of the most important advantages of Flutter is the ability to use a single code base when developing applications for both mobile platforms (Flutter is also suitable for creating applications for one platform). However, there are applications tied to a specific platform or acting as a wrapper for the presentation provided by the platform. An example would be an application running in a background thread for displaying notifications. Such applications can also be written in Flutter, but this will not give special advantages.



We are often asked if Flutter will hold onto the market. There are many reasons why we confidently declare: yes . Firstly, Google itself is a dedicated user of Flutter, both in the development of consumer applications and internal use programs, in particular, the recently released mobile application Google Ads (formerly AdWords) was written in Flutter. Google fully supports Flutter and does everything to make it successful.



Secondly, due to the fact that large applications were usually developed for two unrelated platforms, companies considered it less risky, for example, first to launch an application for iOS, and to create an Android application later if it is in demand. With Flutter, you can simultaneously launch applications for both platforms . Thus, you not only reduce the risks due to the identity of their functionality, but also expand the potential market for your application. Android is benefiting from this.



There is another potential problem: Flutter is a relatively new framework. Naturally, Flutter will take some time to create the necessary tools, expand functionality and develop the community. To date, the platforms have the functionality that Flutter has yet to implement. At the same time, Google is constantly working on adding new features to Flutter.



If you want to delve into the study of Flutter, the article What's Revolutionary about Flutter and Why Flutter uses Dart will be useful to you. You can also see the results of our last Flutter User Survey.



Where to begin



If you decide to try Flutter, here are some helpful tips:



  1. This guide will help you install Flutter, set up the editor and make the first test application.
  2. Check out these Flutter videos.
  3. Here you will find guides for developers with experience with Android , iOS , React Native or Xamarin .
  4. If you have no experience in mobile development, these guides will be helpful: Building Layouts in Flutter , Add Interactivity , and A Tour of the Flutter Widget Framework (includes material on the principles of reactive programming).
  5. Valuable sources are Flutter cookbook , this widget catalog and FAQ .
  6. You can also view applications in the It's All Widgets directory. Many of them have open source, viewable. You can also add your own Flutter applications here.
  7. To receive a weekly selection of the best articles about Flutter, subscribe to Flutter Weekly .
  8. Google Codelabs provides a lot of great content on Flutter , but if this is not enough, you can take a free video course on Flutter from Udacity.
  9. Other useful documentation is available at this link .


Join the Flutter community on Twitter , Gitter and Stack Overflow . I recommend to subscribe to the Flutter Dev newsletter . In addition, you can find the local Flutter Meetup or Study Jam and find out if there are hackathons on mobile development in the vicinity that you can participate in.



Conclusion



So Flutter enables high-speed application development, which increases your productivity and helps you create better-quality applications. This is an expressive, extremely flexible and customizable toolbox that gives the developer complete control over his product. Flutter creates fast and stable native apps for iOS and Android using a single code base.



Flutter saves you money and reduces risk. It is free and has open source. At the same time, Flutter helps you make more money. This is possible because you enter two markets at once: Android and iOS applications, and create better applications in less time.



Perhaps the most flattering feedback from the developers is that mobile development with Flutter is a pleasure ! This is amazing: 92% of developers using Flutter say that it fully satisfies their needs. Do not forget that this survey was conducted before the release of version 1.0, and the number of satisfied users is constantly growing!



Finally, Flutter is focused on the future. This is the only native mobile development tool that supports reactive views. This is a programming paradigm that helps you create better applications using unbelievable features such as super fast, stateful rebooting. And, due to the fact that Flutter is a full SDK, it will retain its relevance for a long time along with the development of new platforms.

Source: https://habr.com/ru/post/433456/



All Articles