Book Image

Managing State in Flutter Pragmatically

By : RAHUL AGARWAL, Waleed Arshad
Book Image

Managing State in Flutter Pragmatically

By: RAHUL AGARWAL, Waleed Arshad

Overview of this book

Flutter is a cross-platform user interface (UI) toolkit that enables developers to create beautiful native applications for mobile, desktop, and the web with a single codebase. State management in Flutter is one of the most crucial and complex topics within Flutter, with a wide array of approaches available that can make it easy to get lost due to information overload. Managing State in Flutter Pragmatically is a definitive guide to starting out with Flutter and learning about state management, helping developers with some experience of state management to choose the most appropriate solutions and techniques to use. The book takes a hands-on approach and begins by covering the basics of Flutter state management before exploring how to build and manipulate a shopping cart app using popular approaches such as BLoC/Cubit, Provider, MobX, and Riverpod. Throughout the book, you'll also learn how to adopt approaches from React such as Redux and all its types. By the end of this Flutter book, you'll have gained a holistic view of all the state management approaches in Flutter, and learned which approach is the best solution for managing state in your app development journey.
Table of Contents (14 chapters)
1
Section 1:The Basics of State Management
4
Section 2:Types, Techniques, and Approaches
8
Section 3:Code-Level Implementation

Inherited widgets – injecting the state at the root

We observed that by using setState functionality we can tell the code which values to update. We also found out how to pass down the data within the widgets through constructors. This technique can turn into a real mess when you have a very deep widget hierarchy. You will have to pass down your counter value to every widget in order to be able to make it accessible by the deepest widget.

Figure 2.1 – Triangle widget trying to access counter value from the topmost square widget

In order to save the effort of passing the value down to every widget for accessibility, we have something called InheritedWidget. This inherited widget sits at the root of your widget tree and its values can be accessed using the .of method. You might have stumbled on something like Theme.of(context).textTheme.title. This is exactly what we will be doing with our counter example so that our counter value can be accessed...