In one of our previous articles, we introduced you to the Flutter framework. We examined what Flutter is, when its use is appropriate, and also when it’s better to use something else. If the name doesn’t ring any bell, or if you’d just like to jog your memory, we recommend reading the first article here. This time around, however, we would like to show you what projects we’ve used Flutter for at Applifting and why.
Before this framework was released, we’d developed all our mobile apps natively. More and more people spoke of multiplatform app development, though, and we wanted to give it a try as well, offering it to our clients as an alternative approach to native development. Now it’s been over two years since we started using Flutter for some of the things we’ve made.
At first, it was necessary to find a project where using Flutter would be sensible. Once that was out of the way, our developers got the show on the road, learning and applying the new framework in practice. Though there were a few minor obstacles here and there, multiplatform apps have turned out to be a score for us, so we’ve decided to stick with it. Nowadays, we even have developers here at Applifting whose primary focus is Flutter alone.
In any event, it is still a new framework that evolves quite rapidly. This goes hand in hand with being able to try out and implement nifty new features added to the framework—or Dart, the language Flutter uses—that made our jobs easier.
Much like other multiplatform frameworks, Flutter is in high demand with clients looking to cut corners on mobile app development. But it isn’t always the right tool for the job, and you must consider whether it will in fact save you any money and time. In some cases, it’s still better to go native. We also wouldn’t recommend using Flutter for standalone websites.
Projects at Applifting
Before I joined Applifting, there were four different Flutter projects. I was part of another four to come. And it is these four projects I’ve worked on and gained experience from here at Applifting that I’ve decided to write about.
Your typical app
The first project I tackled had just me and one other developer working on it. The result was a medium-sized app for both mobile platforms, Android and iOS. It was very much a textbook case of when using Flutter is in fact a good choice. The app’s components were designed in a way that made them easy to implement in the framework. From time to time, the design of some elements changed a bit to make them easier to use and work with.
The gist of the app was to display real-time data from a server database. Users could then change certain types of data or create new ones. Uploading photos and files, however, was a bit more challenging. It was necessary to implement support on both platforms and make sure the files were sent to the server. Luckily, there are two handy packages called image_picker and file_picker to lighten the load. They deal with most of the things you might need, so all you need to do is to use the packages correctly and sort out the edge cases.
Push notifications were also a bit of a tough nut to crack because we had to follow the documentation to a T. It’s good for setting up the notifications, but it generally doesn’t cover all the scenarios and problems that can occur during the implementation. And so you have to direct your attention to other tutorials (on Stack Overflow, YouTube, Medium), which unfortunately tend to be a bit outdated, courtesy of rapid development. Fortunately, implementing push notifications has become easier, no longer requiring so many adjustments. More detailed documentation helps with that as well. Overall, I would say that implementing the notifications was comparable to doing it natively for each platform.
iOS-only
The second project at Applifting also fits in the category of mid-sized apps. This one was focused on investment tools and tracking their price development. There were three of us working in the team, and the purpose of the app was to display data and send user preferences back to the server. Based on these, the users would then receive customized data.