You know the theory now but there's more! Open the demo app to assess the quality yourself or dive into the code for implementation details:
May 9, 2022
Flutter has been on our Tech Radar for more than two years now and since then, we’ve built a solid team of cherry-picked Flutter developers that can deliver quality apps. In the meantime, this team was working on tailor-made processes and polishing quality standards.
This blog post will show you how we ensure a high-quality standard of developed Flutter projects and provide an example – we’ll recreate an existing native iOS app.
To keep things simple, we decided to recreate the iOS Notes app. The app's purpose is simple enough to grasp without much explaining yet it packs a few advanced features and details that will show the strengths of the Flutter framework.
We’ve picked the iOS Notes also for its user base. Users carry a lot of habits and expectations from iOS apps, like the back gesture, page transition animations, and even the app layout. We want to show how Flutter nails the iOS-specific look and feel and still manages to make the Android and Web versions not foreign to its users by unfamiliar app behavior.
For a faster development kick-off, the Monterail Flutter team decided upon a few crucial app aspects and prepared an app template.
The template features:
Also, the template provides a lot of tips about the app and third-party services configuration to speed up development kick-off even more.
Developers on any knowledge level can set up the project since the template provides a first steps checklist.
Sneak peek of the steps:
One of the many strengths of Flutter is its rich widget gallery. Besides the standard ones for layout and spacing, there are two main widget groups built into Flutter: Cupertino and Material. The first one recreates the look and feel of macOS/iOS native apps and the second one provides a widget ecosystem that supports Material design guidelines (with support for Material 3 coming in 2022!)
Flutter provides 20+ high-quality and customizable widgets that perfectly mimic iOS native app components. Look for yourself:
We’ll use this widget set to build our example app.
Although beautiful, the Cupertino widget set is not used as often as the Material set is when building Flutter apps. Its look and feel are macOS/iOS specific and can feel foreign to users of other platforms. The great thing about Flutter’s everything-is-a-widget approach is that we can mix and match Cupertino and Material widgets, so if you like you can just use an iconic iOS picker in your otherwise Material app.
Material widget set is more popular because the Material design itself is thought out to be adjustable to any branding. Also, it’s bigger, at 40+ widgets, thus more robust and useful for more complicated designs.
Following Flutter guiding principles about apps quality, the framework provides built-in testing support, for every feature level - unit, widget and integration.
Tight test library integration with the framework allows Flutter IDE plugin to display an UI for ran tests. Such a UI can speed up the testing process compared to CLI one, and helps make a mental map of test structure.
Flutter provides a robust test suite for unit and widget tests. The common thing throughout the Flutter framework is the fact that everything can be built upon by community members. Tests are no exception and thanks to that we can use community-maintained bloc test library which streamlines BLoC modules testing and can be used without any additional test configuration.
Integration test suite is built into Flutter SDK but has to be explicitly added as a dependency. Integration test code should be stored outside of the default unit and widget test directory (simply test
), as those tests are not meant to be run frequently, rather when the app version is a production candidate.
You know the theory now but there's more! Open the demo app to assess the quality yourself or dive into the code for implementation details:
Demo: https://flutter-notes-d8219.web.app/#/
Code: https://github.com/monterail/flutter-notes
Flutter Cross-platform development
Getting Started with Supabase and Flutter: An Overview