The Ultimate Guide to Becoming a Flutter Expert — Part 4: Intermediate Flutter Developer Guide to Expert

Eternity (Isaac Adariku)
14 min readFeb 28, 2023

by Isaac Adariku (LinkedIn, Twitter, Website)

This article is part of the Ultimate Guide to Becoming a Flutter Expert series that will help you learn and grow into an Expert Flutter Developer. In this article, we will be looking at the next steps to take after you have learned Flutter and Dart language. It is a continuation to take you to become a Flutter Expert 🤩 by focusing on the Intermediate level of Flutter development and the next steps to take to become an Advanced Flutter developer.

The Intermediate level is the most important level in the Flutter development journey. It is the level where you can feel you have arrived and you can start to relax. But the truth is that you have to keep learning and growing to become an Expert.

Part of the Code of Ethics of a Software Engineer is to Self — “lifelong learning regarding the practice of your profession”. Also, the tech industry is a fast-paced industry and you have to keep learning and growing to stay relevant. If you don’t, you will be left behind.

If you feel this is for you and want to go on, I will share with you the essential skills to learn at the intermediate level of Flutter development, tips and tricks to improve development speed, productivity, and quality that will take you to the advanced level of Flutter development.

In case you want to check out any other article in the series, just click on the link provided below:

Who is an intermediate Flutter developer?

Someone who has argue and support which State Management and Navigation package is the best with other Flutter developers is an Intermediate Flutter developer. 😂

If you have ever argued or supported other Flutter developers about which State Management is the best or which is the best way to handle navigation in Flutter, then you are an intermediate Flutter developer. 😄

This means that you have scratched the surface of Flutter and Dart and you are ready to take your Flutter development skills to the next level. 🤩

But let’s go a little deeper maybe you are missing one or two skills outside of arguing.

What is the intermediate level of Flutter development?

Over here let’s leave out the fun part and truly define what an intermediate level of Flutter development is 😜

As an Intermediate Flutter developer, you should possess the following skills:

  • ✅ Building responsive and adaptive Flutter and Dart apps for various screen sizes.
  • ✅ Understand core Flutter concepts such as Widgets, State Management, and Navigation.
  • ✅ Have a good understanding of Dart language concepts such as Async, Await, and Streams.
  • ✅ Knowledge of app architecture and design patterns.
  • ✅ Ability to implement complex UIs, including layout, navigation, routing, and animations.
  • ✅ Proficiency in building, debugging, and deploying large Flutter apps.
  • ✅ Familiarity with Firebase and its various services.
  • ✅ Experience in integrating Flutter apps with native code using platform channels.
  • ✅ Contributing to the Flutter community in some way.
Do you have all those skills? Asking for a friend 😁

🤔 Not sure if you have all those skills 🥹

No worries my friend. Since you are aware of the definition of an intermediate level of Flutter development, it will be easy for you to follow the steps I will provide and become an Intermediate Flutter developer quickly.

How to Become an Intermediate Flutter Developer

1. Go in-depth with Flutter

One key strength of an Intermediate Flutter developer is the ability to share knowledge about the inner workings of Flutter. To achieve this, you need to delve deeply into the Flutter SDK and gain an understanding of how its API functions. This involves learning about the high-level architecture of Flutter, including its core principles and how the framework adapts to different platforms. Additionally, it requires an understanding of concepts such as Elements, Keys, and State Objects that may be present in your codebase but not yet fully comprehended.

By acquiring this knowledge, you will be better equipped to use Flutter and leverage its full potential. To gain a more comprehensive understanding of Flutter’s architecture and philosophy, the following resources may be useful:

2. Go in-depth with Dart Programming Language

Although you may already be aware that Dart is the programming language used to develop Flutter apps, it is also important to note that Dart is also a general-purpose language that can be used to create other types of apps 😎. As a result, gaining a thorough understanding of Dart language is essential, not only for building Flutter apps but for developing other robust applications as well.

To fully comprehend Dart language, it’s necessary to familiarize oneself with several core concepts and understand how to apply them to build powerful apps, including those developed using Flutter. While you may already be aware of some of these concepts, it’s crucial to ensure that you are using them correctly to maximize their potential.

Intermediate-level Flutter developers should have a solid grasp of several core concepts in the Dart language, such as asynchronous programming, Generators, Generics, Mixins, Enums, Annotations, and the Dart VM. Understanding these concepts is crucial for building robust Flutter applications, as well as other types of software.

Fortunately, there are various resources available to help you master these concepts and apply them to your Flutter projects the right way.

3. Learn Project Structure and Architecture

It’s essential to learn about project structure and architecture when working on Flutter apps. As your project expands, you may encounter issues such as an untidy codebase or a complex file system, which can be overwhelming. 😩

Organizing your project structure can help you keep your files organized and make them easier to locate when needed. Andrea offers a clear explanation of the project structure, which you can easily understand and apply.

On the other hand, architecture refers to the way in which you organize your code to ensure that it’s easily maintainable and understandable. There are various architectures available for Flutter apps, and once again Andrea provides comprehensive guidance on the various architectures.😀

As a beginner, I recommended using Stacked from FilledStacks by Dane Mackier, due to its excellent project structure and architecture. You may find it beneficial to check it out and start using it right away.

That looks good 😎

I hope you are getting ready for more 😁, Let’s continue…

4. Spice your app UI with Animations

😎 Adding animations to your app UI can enhance its visual appeal and make it more interactive and enjoyable for users. Animations can be utilized to create cool motion effects that you may have seen in various apps.

Flutter offers a vast array of animation capabilities, allowing you to create various types of animations that can bring your UI to life. At this level, you should be familiar with using implicit animations, such as AnimatedContainer, AnimatedOpacity, AnimatedSwitcher, AnimatedList, and Hero Animations, which are pre-built widgets available in Flutter.

Before delving into resources for learning animations, it’s helpful to gain an understanding of how animations work in Flutter. Check out this animation guide below to get started.

Flutter animation decision tree to choose the best approach to implementing animation — Source

As previously mentioned, it’s essential to learn how to use implicit animations in Flutter. To get started, you can watch the video below:

After that, you may want to explore the implicit animation codelab for further learning and take on the implicit animations challenge in Flutter.

Additionally, as of the time of writing this article, Vandad has launched a comprehensive free animation course for Flutter, which is currently the most up-to-date and detailed resource available for you. I recommend checking it out and subscribing to his channel while you’re there. 😎

5. Learn to make your Flutter apps adaptive and responsive

Don’t forget Flutter is cross-platform 😅, which means that your Flutter app should look and work seamlessly across different platforms, including Android, iOS, Web, and Desktop. Therefore, it’s crucial to learn how to make your Flutter apps both adaptive and responsive.

You can have an adaptive app that is not responsive, or vice versa. And, of course, an app can be both, or neither.

So quickly what is an adaptive and responsive app?

Adaptive: An adaptive Flutter app responds to changes in the app’s content, such as the content’s size, layout, and behaviour.

Responsive: Responsive Flutter apps respond to changes in the app’s environment, such as screen size, orientation, and platform.

An example of a responsive and adaptive Flutter app from the Responsive Framework package

To learn how to make your Flutter apps adaptive and responsive, you can make use of the following resources:

Afterwards, you can put your knowledge to the test with this codelab, which teaches you how to create adaptive and responsive Flutter apps.

You are making so much progress and let’s go!

6. Explore Advanced Firebase Features

At the beginner level, I hinted that Firebase is your best friend. This is because it is an excellent tool for your Flutter applications. However, to create powerful apps, you must delve deeper into Firebase and discover its advanced features.

To explore Firebase further, you must learn how to structure your data effectively, manage data access, set up dynamic flags to control your app, execute app logic on the server side, and more.

Firebase offers all these functionalities, and you can learn to use them with the following resources:

If you are new to Firebase, watch this Firecast video to learn how to get started with Firebase.

A video of Getting Started with Firebase on Flutter

7. Learn Local Data Management and State in Flutter

You might already be familiar with using local storage options like SharedPreferences and Hive to store data locally. However, there is more to learn when it comes to managing local data effectively. 😎

According to Simon Lightfoot from the Flutter Community Team, there are two types of state in an app.

The instance state is the state that is only available in the current instance of your app. This means that when you close your app and open it again, the state is lost examples are your active UI state, scroll position, etc.

The long lived state is the state that is available even when you close your app and open it again. This is the state that you can save in a database or a file and retrieve it when you open the app again. Examples are your user’s data, settings, etc.

To master the management of local data and state, check out the following resources:

8. Learn to build plugins and utilise native APIs in Flutter apps

As a Flutter developer, you might require using native features like sensors (proximity sensors, accelerometers, gyroscopes, etc.) or cameras, for which you’ll need to develop plugins if it’s not available on pub.dev and utilizes native APIs. Fortunately, Flutter makes it straightforward to accomplish this task through various platform channels, including MethodChannel, Pigeon package, EventChannel, and BasicMessageChannel. To learn how to build plugins and use native APIs, you can follow these steps:

9. Explore other State Management Libraries

To effectively manage your app’s state, it’s important to explore other state management libraries beyond the commonly used setState() and Provider. 😁 By doing so, you can gain exposure to new tools and programming patterns, and decide which library best suits your project or team’s needs.

Fortunately, there are a lot of state management libraries available and you can easily learn how to use them by exploring the state management category on FlutterGems. This platform is a curated list of Flutter packages and resources, offering a convenient way to categorize Flutter packages.

If you’re unsure where to start, I recommend trying out my top three favourite state management libraries:

10. Learn how to Debug properly and use DevTools

To become a proficient Flutter developer, it is crucial to learn how to debug properly. Debugging skills are essential to fix challenging bugs and build large projects as part of an existing team. Flutter provides powerful tools to debug your app effectively, including the widget inspector, performance tools, CPU and memory profiling, and app size inspection. All these features come under the Flutter DevTools suite. Apart from DevTools, most IDEs like Android Studio and VSCode offer essential tools like logging and breakpoints to debug your app more efficiently.

To learn how to use these tools effectively, you can refer to the following resources:

We are done! 😀

What next?

Now that you’ve reached this point, you may take a well-deserved break 😌 and enjoy some time at the beach 🏖️ under the warm sun ☀️. However, before you do so 🤓, I would like to share some bonus tips 🚀 that will help you master the intermediate level of Flutter. These tips will not only boost your productivity but also enhance your understanding of some important concepts you need to grasp at this level.

Bonus Tips 🚀

🚀 — Ensure you learn to release your app to stores

It is important to learn how to release your app to stores after all the learning and building of various types of apps since Flutter is cross-platform and each platform has its different ways of releasing the apps to users.

To help with this, Flutter has prepared special guides for all the various platforms, including Android, iOS, Linux, and the web. By following the link for any of the platforms, you can learn how to release your app to them.

🚀 — Practice CI/CD

To automate the process of building, testing, and deploying your apps, you need to practice Continuous Integration and Continuous Delivery (CI/CD) as you progress. With CI/CD, you can easily build your app for multiple platforms at once and streamline the development process. Fortunately, Flutter has many tools to help you achieve this automation. For instance, you can use GitHub Actions, GitLab CI/CD, Bitrise, etc. To learn how to utilize these tools properly, you can refer to Flutter Team’s deployment guide.

🚀 — Improve your productivity with tips and tricks

Flutter already offers great productivity features, but you can further boost your development process with various tips and tricks that can save time and effort. Although numerous tips and tricks exist, here are some useful resources that can teach you how to utilize code snippets, linting, and code generation:

🚀 — Community! Community!! Community!!!

Flutter is a community-driven project and its success depends on the contributions of its members. As an Intermediate Flutter developer, you have the opportunity to give back to the community and learn from it at the same time. You can engage with the community by attending local Flutter meetups, answering questions on StackOverflow, and participating in open-source projects.

One way to contribute to the community is by providing feedback and helping to triage issues on the Flutter Github repository. Even if you don’t have the expertise to solve a particular issue, upvoting or commenting on issues that are important to you can help prioritize them for the development team.

Another way to get involved is by contributing to community-maintained plugins or packages. These packages are often maintained by volunteers, and your contributions can help improve the quality of the package and benefit the larger Flutter community.

Remember, the Flutter community is a two-way street — you can learn from it and contribute to its growth. So don’t hesitate to get involved and make a difference!

Conclusion

Congratulations on reaching the Intermediate level of Flutter! 🎉🎉🎉 You can now use the steps and resources I provided above to master this level and prepare for the next level.

In your free time, you can have fun debating with friends and family about which State Management library is better: Riverpod or Provider? 😂😂😂

Always keep in mind that you must continue to learn and improve your skills to become a better and more proficient Flutter developer. Remember that Flutter is a community-driven project, and it relies on you, so you can contribute to its growth and success in any way you can!

💙 Happy Fluttering! 💙

I hope you found this article enjoyable and helpful.

In the next level of your Flutter journey, you will explore advanced concepts such as custom rendering, desktop and web development, and much more. It’s an exciting prospect and I’m looking forward to seeing you there! 🤩

Help contribute to this article by:

📢 Spreading it with your friends, family, and colleagues.

👏🏾 Tapping the clap button below to show your appreciation and motivation.

📝 Sharing your thoughts and inquiries by leaving a comment below.

➕ Follow me on Medium to receive notifications when I release new articles.

😍 Connecting with me on Twitter and LinkedIn and I would be delighted to provide assistance.

Every day is another opportunity to gain Mastery! 💙 — Isaac Adariku (Eternity)

--

--

Eternity (Isaac Adariku)

GDE Flutter & Dart | Software Craftsman | Organizer FlutterKaduna