Why we chose Flutter

Why we chose Flutter

Some would wonder why a company whose development team speaks almost exclusively Javascript would choose flutter to build their next product.

Well, the short answer is, it was, and still is, the best tool for the job.

The beginning

I was brought into Wyzetalk specifically for my experience in React and React Native as that was the preferred direction for the new mobile application. I spent the first few months doing some RnD projects, and at that time I had not heard of Flutter.

After a few months, my boss was quite surprised to have me come back and say that neither React nor React native would be suitable for the project and that it would be best to use Ionic-Angular.

It was a lot more complex to set up some of the core pieces of our business logic in React Native, compared to Ionic, which I had not even worked with before. As well as an important requirement was to be able to use a single codebase for Web and Mobile.

React pretty much went out right from the get-go as we’ll make use of push notifications quite heavily and PWA’s have no support for them on iOS.

At that time we knew Ionic was planning on releasing support for React and there was another project that needed my attention, so we tabled the mobile app for about a year.

Take 2

At this point a new member to the team has begun discussing Flutter with us, he was very impressed with it and felt it was a very good direction to go for cross-platform apps. I took another, less code-focused dive into the available tools just to see on paper how close they align with a few of the important points, at this stage Ionic-React was a strong contender.

I took a look at our main options, React Native, React, Flutter, NativeScript and Ionic-React.

React was still out as nothing had changed with regards to push-notifications.

Ionic, unfortunately, did not support Android as far back as we needed, capacitor only offered support as far back as Android 5 while a good percentage of our user base was on Android 4.4.4.

React Native support Android 4.1, which was great, however, there was still no viable solution for sharing the code on the web.

NativeScript never went very far, and while I could have given it a better shot, the fact that after installing it, I was unable to get its own demo project started following its own guide on how to do it, did not bode well to me, especially as I was already quite keen on Flutter by that point.

Flutter, while very new to me, which I think was one of the things that drew me to it, seemed very capable, the community seemed great and the code felt both strange and familiar at the same time. It provided us with far enough back Android support as well as the future ability to use the same code for web, so while probably being the riskiest choice at the time, it was also the most viable, and only one that checked all the requirements boxes.

Today

It has been about a year since we made that decision, and it was most definitely the right one, after having worked with it for so long, made my fair share of mistakes and learned a lot, I can see why it’s gathering such a great community behind it.

We gave our UX team the spec of “design the dream, and we will see how close we can get”, so far we are yet to find anything we were not able to do, and for the most part without any serious complexity either.

What I found most impressive was, that being soo young and soo much younger than React Native, how vastly more stable and mature it is. I cannot imagine having been able to build what we have done so far in React Native, or at least not with some serious challenges.

Unfortunately, we are still waiting for web, and I am personally quite eager to see what it will look like, personally I am quite eager and in that regard, we are preparing the application to at least work in the beta channel so that we can get a head start on it. Adding Flutter web to an existing application As it stands now flutter web is not ready for production use, to get started however they have provided the required…medium.com

Conclusion

For anyone thinking of getting into Flutter, you will not be sorry, it is a great development experience, the community is substantial and growing by the day. At the time of writing the support for Android and iOS was relatively stable, Web was in Beta and Linux, Mac and Windows had all begun testing. We will soon have a truly cross-platform codebase.

I personally cannot wait to see what is next and am so glad I had the opportunity to work with this amazing technology.

Don’t get me wrong, coming from Javascript it was a very big learning curve, which helped me a lot, in the beginning, was https://fluttercrashcourse.com/, and along the way, the tutorial by Reso Coder (YouTube | Website) was absolutely invaluable.

I hope you found this interesting, and if you have any questions, comments, or improvements, feel free to drop a comment. Enjoy your Flutter development journey :D

If you liked it, a like would be awesome, and if you really liked it, a cup of coffee would be great.

Thanks for reading.

Dependency Injection and Testing Using dependency injection can be great for simplifying your code and keeping it DRY, it can also simplify testing and…

Unit Testing your http.MultipartRequest network method Recently I had to implement image uploading which required form data that cannot be done with the standard…