By Jindřich Pikora | 13.2.2023

Flutter: Hands-on experience at Applifting

Development – 8 min read

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.

This app was to be released exclusively for iOS, which isn’t all that common when using Flutter, whose main advantage lies in being able to develop for both mobile platforms at the same time. But it was the customer’s wish, and since it wasn’t anything too complicated, creating the app in Flutter was a swift endeavor. The design was adapted to make it look like any other native iOS app that the users of the operating system are generally used to. We achieved this by capitalizing on Cupertino components, which come with pre-defined appearance and behavior.

Expanding to Android in the future would then be a walk in the park. In some cases, you can do this without any changes right off the bat, provided you don’t mind the app looking and behaving the same on both platforms. This app in particular didn’t include any iOS-specific requirements, so we were able to compile the app for Android without so much as changing a thing. Nevertheless, having the exact same design for both platforms is not recommended—by and large, users expect apps to look and feel like they're made for their platform of choice. That includes different designs for buttons and components, along with their placement on the screen. Flutter handles a lot of the platform differences on its own, using the same code to create apps that behave differently based on the OS (platform-specific behavior).

Prototyping

Yet another project stood out from the previous two in that we weren’t building a functional app to be released into the world but rather a prototype to facilitate user testing. Its purpose was to simply check whether the designed flow was user-friendly or whether it needed some adjustments.

Thanks to Flutter, the whole project spanned just a couple of days, and I handled it on my own. Flutter is great for this sort of quick prototyping since it lets you create the user interface in the blink of an eye, not to mention it’s not just a design tool like Figma. Thus you can quickly review features like a QR reader, searching in a list, etc. Under these circumstances, you get a sufficiently functional app to test at a fraction of the cost and time.

When the prototype was complete, we enlisted the help of several people—current users of the app, which was to be updated with the new prototyped features after the test. Following specific scenarios, they were asked to perform tasks in the prototype while we observed their behavior. That way, we could see whether the flow was easy to understand and whether the features were sufficiently intuitive.

Web

You can also use Flutter to develop web applications, though it isn’t always the best choice. For example, it’s not suited for developing landing pages as it doesn’t support SEO or allow you to index content in browsers.

However, there are certain exceptions that make the framework useful for websites, which was also the case with this project. It revolved around an administration web application for a client who already had the mobile app created in Flutter.

The reason why it made sense to use Flutter for this project was that the rest of the developer team had already been using it. It would make it easy for them to maintain both applications in just one framework that they were already familiar with. At the same time, they would be able to use the same UI components, which would save them time.

Conclusion

The interest in multiplatform apps has been soaring lately, and that’s why we’ve been kicking it up a notch with Flutter at Applifting. Based on my experience so far, I can say that Flutter is a good choice for various projects—it excels with small mobile apps or apps that don’t necessitate the use of platform-specific features, and it’s good for prototyping as well. And while we wouldn’t recommend using Flutter for standalone website development, even then there are cases in which its use for web applications makes sense.

Are you a Flutter developer looking to make use of your talents on meaningful projects? Then join us, our Flutter team is currently looking for a crafty developer to get in on the action. You can find more info about the position here.

Share this article

Join our newsletter

By clicking the button I agree with the collection and processing of my personal data as described in the Privacy policy.