Micro Focus is now part of OpenText. Learn more >

You are here

You are here

4 tips for building high-quality Flutter applications

Eran Kinsbruner DevOps Chief Evangelist, Perforce
The Royal Air Force Aerobatic Team, the Red Arrows, in formation at Bournemouth Air Show 2020. Photo by Trey Musk on Unsplash

Flutter is a great mobile application framework for developers, testers, and organizations overall. Because it lets you build iOS and Android applications with the same codebase on a user-friendly interface, Flutter makes app development both fast and cost-effective. It also offers availability on different IDEs, performance that is indistinguishable from native mobile apps, ample documentation, and an active user community.

Released by Google in 2017, Flutter consists of both a software development kit (SDK) and a widget-based UI library that includes sliders, buttons, text inputs, and other reusable UI elements. Developers can build Flutter applications with Dart, a front-end-focused, typed object programming language with a syntax similar to JavaScript's.

If you are looking to join Philips Hue, eBay Motors, iRobot, and other tech companies that have built their own successful Flutter applications, here are four important tips for making the most out of Flutter's available features and creating high-quality Flutter applications.

1. Speed up development with hot reload

One of Flutter's most critical features is hot reload. With hot reload, teams can simplify the process of adding features, fixing bugs, and building UIs.

Hot reload works by loading code changes onto a VM; from there, it automatically rebuilds the widget tree. This allows developers to view the effects of their changes in real time—while still preserving the current state of the application.

Since the changed code reloads immediately while the app is running, without requiring a restart, teams can see the code changes as soon as they happen. This helps teams make decisions faster, since they can more quickly determine whether a new feature is functioning properly or whether a bug has been eliminated.

2. Simplify integration testing with Flutter Inspector

There are three types of tests that go into testing a Flutter application properly: unit tests, widget tests, and integration tests.

Integration tests are the only ones that test the application in its entirety. While unit testing and widget testing typically fall under the purview of the development team, testers are often the ones responsible for integration testing.

As such, testers will find the Flutter Inspector feature invaluable. Inspector helps testers visualize and explore Flutter widget trees. This in turn helps testers get the element properties they need for writing integration tests. Inspector also allows teams to debug layout issues or the apps themselves, either visually or with code.

Using Inspector makes the integration-test creation process simpler and faster, encouraging teams to test their Flutter apps thoroughly and properly. Inspector also bears the major advantage of letting users run integration tests for Flutter apps within the native Flutter framework. But testing natively within Flutter is not the only way to go when testing Flutter apps.

3. Expand Flutter’s testing capabilities by integrating with Appium

While some teams prefer to test within the native Flutter framework, taking advantage of Inspector and fast test execution performance, other teams opt to test with a mix of Flutter and Appium.

When using Flutter natively, teams are limited in their testing scope to the Flutter application under test. Therefore, testing events that happen outside the context of the application on a mobile device are not supported.

Appium—an open-source test automation tool for native, mobile-web, and hybrid applications—is useful for making up the difference. Combining Appium 2.0 and Flutter can help expand the coverage of the Flutter application by offering capabilities and support not found within Flutter itself, such as biometric authentication, network virtualization, and accessibility support. Moreover, from a scripting perspective, testing Flutter apps does not require any changes in writing Appium tests.

The best way to test Flutter apps with Appium is by using the Appium 2.0 decoupled driver, which is now in advanced beta mode. With this new version, Appium drivers—including the Flutter driver—will be split from the main server the drivers by different technologies, better enabling customization.

In any case, testing Flutter apps natively and testing Flutter apps with Appium don't have to be mutually exclusive. Testing and development teams can get the benefits of both by separating the testing of the application itself (which may be more suited to native testing) from the testing of other important functionalities that surround the application (i.e., via Appium).

4. Improve Flutter test coverage with a mobile device cloud

Teams looking to build high-quality Flutter applications should ensure that their apps are tested on the right mix of mobile devices. They should choose which devices they want to test based on where their users are located, other user data, device trends, and overall comfort with risk.

To ensure that they are testing on all the right devices, teams should test their Flutter apps in a mobile device cloud that will enable them to:

  • See all their devices in one place
  • Easily incorporate Flutter testing into their CI/CD pipeline while staying within the Flutter ecosystem

One way for a team to ensure that its device cloud meets these two criteria is by working with a platform that integrates with Flutter, where they can perform Flutter-based integration tests on real devices that test applications end-to-end.

Testing devices in an enterprise-grade private cloud solution has other benefits. Using a cloud-based platform simplifies the process of testing on every necessary device. It also prevents the headache of dealing with downtime, network clogging, and other issues that come with in-house architecture.  

To this end, to ensure that you are building and releasing high-quality Flutter applications, make sure that you are making the most of the resources available to you. By incorporating the above-mentioned best practices, it will only be a matter of time before your Flutter application takes flight.

Keep learning

Read more articles about: App Dev & TestingTesting