When evaluating new projects we always ask ourselves what technology we should use to build the front end client. For KVV Home Zone we decided that Flutter would be the perfect technology for it.
Why Flutter is perfect for KVV Home Zone
Our client wanted an app for Android and iOS as well as a Web App to create and configure their ticketing zones.
Thanks to Flutter we are able to build for all three platforms using a single codebase while still being close to the mobile platforms to easily make use of platform features like notifications and geolocation. Having one codebase also meant that we didn’t have to worry about differences between the different platforms which proved to be really helpful as we could iterate on concepts quickly without needing to sync between multiple teams. On top of that we could develop the app with a way smaller team than we would have needed if we went the native route for all three platforms.
Things we learned
Flutter Community & Openness of Packages
Packages in Flutter allow to use solutions other people have already solved for you. While this is a concept present in almost all programming environments the way Flutter handles it makes us feel more confident in using solutions by others.
- basically all packages are Open Source: You can easily see the code written and decide if you trust it or not
- Fixing bugs/adding functionality is as easy as forking the package on github and then use it from your fork without having to setup anything
- The creators of packages are actively helping in issues so you rarely get stuck
- pub.dev is great for discovering alternatives if a package is not what you need from it
The State of Flutter Web
Our biggest concern going into the project was the state of Flutter Web as it still is in beta. Our biggest problem that Google Maps was not available for Flutter Web out of the box. We solved this by writing a wrapper using the google_maps package by a14n. Originally the plan was to release this wrapper as a package however by now there is an official version for web support which actually uses a similar approach to our solution.
Apart from that we never really faced issues that were so severe that we regretted choosing Flutter Web for this project. Will we consider using Flutter Web to add Web support for future Flutter Apps? Yes. Will we write future web-only apps using Flutter Web? Maybe? In the near future we will probably continue using web specific technologies the same as still doing native apps for Android and iOS. However we are really looking forward to the direction Flutter Web will take.
Testing in Flutter
(Automatic) testing has a big priority at ZWEIDENKER and we are very glad that Widget Tests are a quick way of testing our code. There is no doubt that tests improve the code quality and what we find so great about widget tests is that it allows us to test full flows as well as isolated screens/widgets all that while running super fast. On top of that it is super quick to write Widget tests as Remi Rousselet expressed perfectly.
What will be next?
Flutter will take a bigger role for future projects at ZWEIDENKER. It gives us the opportunity to deliver apps with smaller teams on a faster timeline while still maintaining great quality.
Anton | Android Developer at ZWEIDENKER