Flutter is a framework that, based on a single source code base, enables the development of native apps for both Android and iOS. It shortens and simplifies the app development process, reduces costs, makes it easier to test, maintain and update. While doing all this, it also ensures high performance of the created applications.
If you are still wondering whether to use Flutter in your next project, read what our expert Marcin Ochyra thinks about it.
Marcin, You have been working in the mobile environment for nearly 10 years. And during that time, there were probably numerous mobile application development technologies, and different approaches. What did it look like?
Yes, that’s right. As I pursued my career, we have used the native technologies, applications for Android and IOS were written separately.
Then, there appeared frameworks which provided a possibility of writing one code, so that the application works on many platforms. It was React Native, which still remains popular. Recently, there has appeared Flutter, and since then it is gaining popularity.
If you were to tell me, from the developer's perspective, what makes Flutter so special, why it is better than some other technology, I suppose that there are various solutions.
I think it is worth comparing Flutter to React Native. They differ primarily because React Native uses native elements of each platform, for example, a native code of a platform, which results in displaying a given element.
For example, if there appears a need to display text, then the native element of user interface from a given platform is displayed.
Moreover, Flutter has implemented a Skia graphics engine, which is responsible for rendering the entire mobile application, so there is no need to use a native code. It is Flutter that prepares the entire interface, which makes it work faster than React Native.
Flutter is a relatively new technology; however, it has been on the market for some time now. Tell me, at what point and what made you think that this is the technology you want to work on.
When Flutter appeared, I got interested with the fact that it uses the Dart programming language which is similar to all other languages, also to JavaScript. It is single-threaded and asynchronous, so it was very easy to switch to it and try it in practice.
And why did Flutter steal your heart and made you work only on this system now?
First of all, it was the constantly developing community. Flutter is growing dynamically, which is significantly influenced by the above-mentioned community.
There are many meet-ups and conferences to expand knowledge, meet people involved in the development of popular Flutter extensions, or even create the Flutter solution itself.
And for someone who doesn't know it yet or is just getting started – what characterizes Flutter, how is it built, how does it differ from other platforms?
In fact, Flutter remains React Native in creating interfaces. It is because of widgets used to create it, and, in React Native, they are built from components, so in fact, the let’s say ‘blocks’ that we play with, nest, and thus build a user interface.
Is the process of nesting blocks, or widgets, one in another somehow limiting a developer?
No, it's not a limitation. We can actually write our own ones basing on others, or from scratch. We control various animations and are able to create a rich UY.
Flutter uses its own graphics engine, and, as a result of that, the animations are displayed smoothly. The solution guarantees 60 frames per second, so there is no lose on performance even while creating a very extensive, animated UY.
Case Study: LOTTO's new mobile application
We have to mention that on the one hand there is a ready set of elements, and on the other, a lot of freedom concerning adding new ones or modifying those already existing. It is not that we create something only for personal use. Being a part of such a large community, we can even say that we influence the development of this technology.
Despite the fact that there are the already-prepared sets of "blocks," widgets, by the Flutter team, we also have full freedom in creating our own extensions.
We can publish them on the official repository called the Pub Dev, on which everyone can use them. We can invite other people to develop our project, and, in addition to widgets, we can create extensions that use the native code of a given platform.
For example, using different types of device sensors display WebView, i.e., the content of the website, and also communicate via Bluetooth.
You're talking about these native solutions. Flutter, on the one hand, is one of the best platforms for creating hybrid ones. But tell me, if we were to compare, are they worse than the native?
They’re not worse. We can create a code that is compiled into the native code of a given platform, so that it works very quickly. It may be a little slower.
I mean, it is very fast, but there is a need to communicate with the native platform. In fact, when it comes to the user interface itself it is very smooth, so users are unable to notice any differences.
If we want to implement something native, then we need to write a native code, as, of course, there is no such extension to the repository. Then we need to prepare such a code for each of the platforms, that is Android, for IOS.
So, in such a situation I do not have to create a separate native app. Only the native fragment is added to the app that was created in Flutter and I can still use this technology, and approach to creating applications.
Yes, exactly. We can just write an extension that will support some specific functionality. What is interesting, in a native application for Android or IOS, we can place an application created in Flutter.
So, while using a native code, we can open the views from Flutter, and the other way around - on Flutter we can nest the views from native platforms.
Is there a point to create native applications?
It depends on the purpose. For example, if we don't want to create applications for several operating systems, then we should focus on the native platform.
However, if we are writing applications that are supposed to support multiple platforms, then it is best to focus on something that saves time on creating such an application by writing only one code running on several platforms.
Case Study: mCommerce application with a catalog of 2.5 million products
Like we said, Flutter keeps growing. I like the fact that it is not limited to mobile devices, like smartphones, but also to other channels. How do you see the further development of technology in this respect? I mean the further development of Flutter - which direction will it take, what opportunities will it provide?
At the beginning, Flutter was designed for writing mobile applications, it worked only on Android and IOS. It has been available as a stable version for quite a while.
As a result, we can write a stable code on the platform, and create various types of dashboards for web apps.
Literally a few days ago Flutter appeared in a stable version for Windows, so we can already create applications for this system, as well as in beta and alpha versions on MacOS and Linux. Flutter aims to be a tool for creating applications for all devices.
Including fridges and TVs?
Exactly. TVs and fridges are often provided with an Android system.
And this makes Flutter a universal language. What is more, in a moment it may turn out that you were right to focus on mobile apps, as, thanks to the technology, you can return to creating universal, device-independent applications.
Yeah, exactly. A developer writes one code, and an app works everywhere.
So, it may turn out that Flutter will replace the process of creating applications in all other languages and platforms? What do you think?
Not necessarily, there is always a need to write native code, so native platforms will still exist. Flutter, however, will be a kind of layer of the user interface. I mean, it will communicate with users, display individual elements, respond to user interactions, and transfer data to the native platform.
However, when it comes to communication, for example, the backend - the HTTP protocol, Dart also communicates without any problems, as do file systems – also supported by Dart.
And from the point of view of the customer, business. What should be paid attention to when choosing the best technology to create a mobile application. How to approach the creation of these applications to actually get what one wants.
From the customer's point of view, the most important is costs. Flutter allows for creating one code that works on multiple platforms.
Of course, it is not a hundred percent that one code covers the whole app. There may appear a need to modify something for a specific platform.
First of all, we need to verify whether such an application works properly. Flutter primarily supports the function of Hot Reload, so that changes in the interface are visible immediately after saving the file, which is undoubtedly a saving of time.
So, it is easier for a customer to verify whether it looks like such a person wanted it to. The comments can be made, and the corrections are introduced already at the stage of creating a solution.
First of all, it seems to be a lot easier for the developer. When such a person sees the app's graphical interface, which is to be implemented, there are all of the changes visible.
As a result, the time is not wasted for recompiling the entire code and launching an application again. It is displayed on the same place where it was launched and retains its status.
So not only do we write one code instead of several, for several systems, but we are able to verify it even faster and check if everything is as it should be.
Totally.
So, tell me. Supposing I am a developer, I would like to get to know Flutter better, regardless of whether I don’t know it at all or I already know it quite well and would like to expand my knowledge. Where should I look for more information?
Social forums, and Facebook groups are very helpful. There is also a possibility of using various courses on platforms such as Udemy, and the really transparent Flutter's documentation.
You said that an undoubted advantage of Flutter is a well-developed community, so I think if someone seeks help, it may be useful.
Exactly, very often we organize various types of meet-ups as part of GDG – Google Developers Group, on which Flutter is discussed.
It is also worth noting that a small Warsaw community managed to organize a European conference on Flutter, which attracted many people from various parts of the world – not only from Poland or Europe, but even from Argentina.
Yeah, as it is a very interesting technology, people want to make use of this type of information sources.
I totally agree. First of all, there are people who are involved in the creation of Flutter itself. Also, employees from Google prepared presentations, and it is nice to talk to them.
That's definitely an important element. Concluding, if you're a developer and you're thinking about Flutter - I don't think you should do this anymore, and if you're a client - I think Flutter is a right choice. Thanks for the interview, Marcin.
Thank you.