The website content provides 16 advanced ideas for Flutter developers to enhance their skills, covering topics from testing and animations to software architecture and user behavior analysis.
Abstract
The article "16 Ideas to Improve Your Flutter Skills (Advanced Roadmap)" is tailored for developers who have already built applications with Flutter and are looking to advance their expertise. It outlines a variety of sophisticated concepts and projects that can be incorporated into personal or professional Flutter app development. These ideas range from implementing automated testing, push notifications, and animations to adding translations, exploring state management solutions, and integrating routing packages. The article also touches on utilizing webviews, conducting A/B tests, managing app flavors, adhering to clean coding practices, incorporating advertisements, mastering shortcuts, integrating native features, using remote databases, handling authentication, and analyzing user behavior. Each idea is accompanied by links to relevant resources and tutorials, encouraging developers to challenge themselves and grow their skill set. The author emphasizes the importance of these advanced topics for those aiming to become senior developers and suggests further reading and exploration, including their other articles on related subjects.
Opinions
The author believes that mastering automated testing is crucial for business contexts and suggests starting with unit tests and progressing to more complex testing methods.
Push notifications are considered essential for user engagement in larger apps, with Firebase Cloud Messaging being the most popular solution.
Animations are seen as a way to distinguish an app and potentially increase user engagement, with Rive and Lottie being recommended tools.
The inclusion of multiple language translations is viewed as necessary to expand the user base.
Familiarity with state management packages like Provider, Riverpod, and Bloc is recommended, while the use of GetX is discouraged due to community sentiment.
The article suggests that while Flutter's native navigation is sufficient for small apps, using routing packages like AutoRoute or GoRouter is beneficial for larger apps with complex navigation needs.
Webviews are commonly used in apps, including by major platforms like Facebook and Twitter, and should be explored for integrating web content within an app.
A/B testing is presented as a valuable method for making data-driven decisions about app design and features, with Firebase as a potential tool for implementation.
The use of flavors in app development is advocated for managing different app environments or versions, such as free and paid versions.
The author stresses the importance of clean coding and software architecture, recommending books like "The Pragmatic Programmer" and "Clean Architecture" for deeper understanding.
Monetization through advertisements is mentioned as a consideration for apps with significant user traffic, with AdMob being a prominent provider.
The article encourages the use of keyboard shortcuts to improve development productivity, providing resources for both general and Flutter-specific shortcuts.
Integrating native features using platform channels or dart:ffi is suggested for functionality not covered by Flutter plugins.
Using remote databases like Firebase Firestore is recommended for data storage and retrieval.
The implementation of user authentication is highlighted as an important feature, with Firebase Authentication as a potential solution.
Analyzing user behavior with tools like Google Analytics is advised to understand user engagement with different parts of the app.
The author expresses gratitude to readers and invites feedback, highlighting the disadvantages of the new Medium Partner Program incentives and encouraging support for technical writers through article interaction.
16 Ideas to Improve Your Flutter Skills (Advanced Roadmap)
Introduction
Have you already created one or more apps with Flutter? Do you now want to continue improving your Flutter skills with small projects that are important for private and business contexts? Then this is the right article for you!
Following, I propose 16 ideas that you can easily include in your own app to improve yourself as a Flutter programmer. The article does not include specific steps but rather ideas with relevant information linked so that you can directly start to implement them. Topics vary from including translations, writing tests, and learning more about software architecture. Take at first a quick glance at the whole list and then read and implement a topic that interests you and if these ideas have not been enough for you check also out my other article Another 11 ideas to improve your Flutter skills even further (advanced roadmap). Have fun!
Most bigger apps use push notifications to interact with the user while the app is in the background. The probably most popular solution for this is Firebase Cloud Messaging. Send some push notifications every second week to let users return to your app. You can also connect push notifications with a routing package (see 6.) to link to a specific subscreen.
3. Animations
With animations, you can give your app a special feeling that distinguishes it and can lead to longer use times. Two popular solutions are Rive and Lottie. Here you can create images, animations, and State Machines. State Machines change from one animation to another with a tap or a self-defined condition. On Rive, it is possible to use most content created by the community if you credit the original creator. Following, you see a self-created state machine for a dice game app that is not published yet. Try out to integrate a community animation into your project or even create your own state machine.
The two stages of a self-created state machine. By tapping it the animation changes from the first state two the second one. The dices are from Toniolli.
4. Translations
To increase your target audience it is necessary to add translations for multiple languages. Most apps with a large user base contain at least two if not more languages. If you have not yet used translations in your projects so far I can recommend starting with Flutter’s i18n package and using e.g. DeepL for the translations.
5. New state management package
Get familiar with the most popular state management packages like Provider, Riverpod, and Bloc. Start a new project with a new state management package or replace your existing state management solution with another one. Here is my article about why you should not use GetX. The most liked package on pub.dev but the most hated by the community.
6. Routing packages
Flutter provides two different ways to handle navigation which are imperative (Navigator 1.0) and declarative (Navigator 2.0). While Flutter’s internal APIs are enough for small apps, it can be useful to switch to a routing package when your app grows larger and you want to easily implement deep-linking and guarded routes. For Flutter, the most popular routing packages are AutoRoute and GoRouter. If you did not use any of these so far you can try implementing one of them. On the other hand, if you already used a routing package you can try to create a link that opens the app on a specific screen or implement guarded routes that can only be accessed if the user is already logged in.
7. Webview
Most apps contain smaller or larger amounts of webviews that just display a website in your app. Among them are apps with huge user bases like Facebook, Instagram, and Twitter. Try to display a website with packages like flutter_inappwebview or webview_flutter which are most commonly used. If you already did this you can tackle some advanced topics like allowing only certain URLs and getting information from the website like a bearer token by a JavaScript handler.
8. A/B tests
A/B testing is used by data-driven companies to decide if a design change, a new feature or something else leads to a desired behavior like a higher buy conversion. You can implement A/B testing in your own app e.g. with Firebase and check if a different button color or position leads to a different click rate. You can implement this also without reals users, to do a real evaluation you need a larger user base.
9. Flavors
Lots of apps use flavors to set up different environments in your app. The term comes from the Android field, where it is used in the same way. The equivalent for iOS are build configurations. Flavors can be used to build a free and a paid version with the same code base. Another case in which flavors make sense is white-labeling, e.g. creating the same shopping app with different colors and different API calls for different online shops with the same code base. To master, flavors create another flavor of an existing app with a different icon and different colors.
10. Clean coding and software architecture
As a programmer, learning about clean coding and software architecture is crucial because these concepts form the backbone of creating high-quality, scalable, and maintainable software systems. Clean code is writing code that is easy to read, understand, and modify. Good software architecture, on the other hand, ensures that the software system is organized, modular, and adaptable to changes in requirements or technology. Here I propose reading books like “The Pragmatic Programmer”, “Clean Code” or “Clean Architecture” (Amazon affiliate links). Take also a look at my article “What is the difference between MVC and MVVM (for Flutter)?”.
11. Advertisement
Including advertisements is a way to monetize your app (if you have a million users per day). The most prominent provider is probably AdMob which is again another Google service.
12. Shortcuts
Shortcuts are a way to improve your productivity significantly. You can find the most important general shortcuts here and some Flutter-specific shortcuts here. In the book “The Pragmatic Programmer”, I highly recommend reading, David Thomas and Andrew Hunt propose to work for a certain time without a mouse to improve your shortcut game.
13. Native features
Sometimes Flutter is not enough. Either you have to implement a native SDK or you want some functionality that is not available as a Flutter plugin yet. Then you have to use native Android or iOS code to get the job done. I suggest implementing some native functionality with a method channel like checking the current battery level or displaying a native screen with a button. A more advanced project would be to implement some native functionality with dart:ffi with which you can call native C APIs.
Authenticate your users e.g. with Firebase Authentication. Try also anonymous authentication in combination with guarded routes (6.).
16. Analyse user behavior
Use e.g. Google Analytics to track events and user behavior to see on which parts of the app the user spends the most time.
Conclusion
These have been 16 ideas that you can include in your project to improve your Flutter skills. By the time you realized all of them you are probably a senior developer. If you are looking for even more ideas to improve check also out my other article Another 11 ideas to improve your Flutter skills even further (advanced roadmap).
Thanks for reading the article! Did you like it? Clap and follow me to stay tuned. Do you have questions or further implementation ideas? Please let me know in the comments. Any further feedback is highly appreciated!
If you liked the article clap (50x), highlight, comment, and share it. Not only but especially technical articles got disadvantaged by the new Medium Partner Program incentives. If you want to support your favorite (technical) writers on Medium, remember to interact with the articles. You find more information about this here: The New Medium Partner Program is Bad for Quality Writing!