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. Have fun!
Ideas
- Automated testing
Testing is a big topic on its own that can be quite important in business contexts. The next step in your testing journey depends on your experience. Did you never write tests before? Then start with unit tests. Do you already know how to do unit testing? Then continue with widget testing, integration tests, or maybe something fancy like golden testing.
2. Push-notifications
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.
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.
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”. 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.
14. Remote database
Store some remote data for example with Firebase Firestore.
15. Authentication
Authenticate your users e.g. with Firebase Authentication. Try also anonymous authentication in the 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.