<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Mouaz M. Al-Shahmeh</title>
    <description>The latest articles on Forem by Mouaz M. Al-Shahmeh (@mouaz_m_alshahmeh).</description>
    <link>https://forem.com/mouaz_m_alshahmeh</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F830086%2Fcc25ee10-9721-4190-9bb3-18a3bae1c923.jpg</url>
      <title>Forem: Mouaz M. Al-Shahmeh</title>
      <link>https://forem.com/mouaz_m_alshahmeh</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/mouaz_m_alshahmeh"/>
    <language>en</language>
    <item>
      <title>How to change Flutter Stop Error Screen Style?</title>
      <dc:creator>Mouaz M. Al-Shahmeh</dc:creator>
      <pubDate>Mon, 04 Apr 2022 23:52:33 +0000</pubDate>
      <link>https://forem.com/mouaz_m_alshahmeh/how-to-change-flutter-stop-error-screen-style-3h3p</link>
      <guid>https://forem.com/mouaz_m_alshahmeh/how-to-change-flutter-stop-error-screen-style-3h3p</guid>
      <description>&lt;p&gt;In many cases you need to see the error exception of Flutter as friendly as possible when you develop your app. For example, this red stop screen error:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvm59jjv4mv0a41e0owiz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvm59jjv4mv0a41e0owiz.png" alt="Image description" width="800" height="1152"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Fortunately, the red stop exception error screen of Flutter you can edit as you want with custom style.&lt;br&gt;
In main function of dart you need to add customization of ErrorWidget.builder as the following:&lt;br&gt;
`void main() {&lt;br&gt;
  ErrorWidget.builder = (FlutterErrorDetails details) =&amp;gt; Material(&lt;br&gt;
    child: Container(&lt;br&gt;
      padding: const EdgeInsets.symmetric(vertical: 40.0, horizontal: 20.0),&lt;br&gt;
      child: Center(&lt;br&gt;
        child: Column(&lt;br&gt;
          mainAxisAlignment: MainAxisAlignment.center,&lt;br&gt;
          mainAxisSize: MainAxisSize.min,&lt;br&gt;
          children: [&lt;br&gt;
// If you need to add another friendly photo &lt;br&gt;
             // you can here for example  &lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;         const Text(
          'Error',
          textAlign: TextAlign.center,
          style: TextStyle(
            color: Colors.redAccent,
            fontSize: 24,
            fontWeight: FontWeight.bold,
          ),
        ),
        const SizedBox(height: 20),
        Text(
          details.exceptionAsString(),
          textAlign: TextAlign.justify,
          style: const TextStyle(
            color: Colors.red,
            fontSize: 18,
            fontWeight: FontWeight.normal,
          ),
        ),
      ],
    ),
  ),
),
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;);&lt;br&gt;
 runApp(MyApp());&lt;br&gt;
}`&lt;/p&gt;

&lt;p&gt;And the result of any error as this instead of it before customization:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1hgdw6oi8v5tam5ryfqh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1hgdw6oi8v5tam5ryfqh.png" alt="Image description" width="800" height="1152"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Finally, the error or Flutter exception appear more friendly when you develop your apps.&lt;/p&gt;

</description>
      <category>flutter</category>
      <category>dart</category>
    </item>
    <item>
      <title>GoRouter and Flutter Navigation 2 Support</title>
      <dc:creator>Mouaz M. Al-Shahmeh</dc:creator>
      <pubDate>Tue, 29 Mar 2022 17:04:36 +0000</pubDate>
      <link>https://forem.com/mouaz_m_alshahmeh/gorouter-and-flutter-navigation-2-support-58e9</link>
      <guid>https://forem.com/mouaz_m_alshahmeh/gorouter-and-flutter-navigation-2-support-58e9</guid>
      <description>&lt;p&gt;In this essay I am going to talk about modern navigation in Flutter with Navigation 2 over previous navigation in flutter.&lt;br&gt;
In previous navigation you need to call push, pushReplacement or pushReplacementUntil, but now in goRouter from Flutter you need only go or push on routing of your stack app.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgw7kazmcyr2le4ndax1d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgw7kazmcyr2le4ndax1d.png" alt="Image description" width="800" height="574"&gt;&lt;/a&gt;&lt;br&gt;
Stack illustration (1)&lt;br&gt;
In navigation or routing between your screens in app you need to care about it especially if there are a lot of it such as e-commerce app. So, you need to system stack of routing which is still and wether you need to delete if move from it.&lt;br&gt;
&lt;strong&gt;GoRouter and Flutter Declarative routing:&lt;/strong&gt;&lt;br&gt;
The purpose of the go_router package is to use declarative routes to reduce complexity, regardless of the platform you’re targeting (mobile, web, desktop), handle deep and dynamic linking from Android, iOS and the web, along with a number of other navigation-related scenarios, while still (hopefully) providing an easy-to-use developer experience. (2)&lt;br&gt;
First you need to add dependency in pubspec.yaml:&lt;br&gt;
&lt;code&gt;dependencies:&lt;br&gt;
  go_router: ^3.0.6 # or the latest version from pub.dev&lt;/code&gt;&lt;br&gt;
Then add the import in main.dart:&lt;br&gt;
import 'package:go_router/go_router.dart';&lt;br&gt;
We need to modify MaterialApp.router in class App as this:&lt;br&gt;
&lt;code&gt;@override&lt;br&gt;
  Widget build(BuildContext context) =&amp;gt; MaterialApp.router(&lt;br&gt;
        routeInformationParser: _router.routeInformationParser,&lt;br&gt;
        routerDelegate: _router.routerDelegate,&lt;br&gt;
      );&lt;/code&gt;&lt;br&gt;
And we need to declare routes in our app as this:&lt;br&gt;
&lt;code&gt;final GoRouter _router = GoRouter(&lt;br&gt;
    routes: &amp;lt;GoRoute&amp;gt;[&lt;br&gt;
      GoRoute(&lt;br&gt;
        path: '/',&lt;br&gt;
        builder: (BuildContext context, GoRouterState state) =&amp;gt;&lt;br&gt;
            const HomeScreen(),&lt;br&gt;
      ),&lt;br&gt;
      GoRoute(&lt;br&gt;
        path: '/productDetail',&lt;br&gt;
        builder: (BuildContext context, GoRouterState state) =&amp;gt;&lt;br&gt;
            const ProductDetailScreen(),&lt;br&gt;
      ),&lt;br&gt;
    ],&lt;br&gt;
  );&lt;/code&gt;&lt;br&gt;
After that we can use GoRouter anywhere we want. but what the difference between go and push?&lt;br&gt;
In this code we use go that means the current screen is deleted from stack before we route to another screen by only write context.go('/') method.&lt;br&gt;
`/// The screen of the product detail screen.&lt;br&gt;
class ProductDetailScreen extends StatelessWidget {&lt;br&gt;
  /// Creates a [Page1Screen].&lt;br&gt;
  const Page1Screen({Key? key}) : super(key: key);&lt;/p&gt;

&lt;p&gt;@override&lt;br&gt;
  Widget build(BuildContext context) =&amp;gt; Scaffold(&lt;br&gt;
        appBar: AppBar(title: const Text(App.title)),&lt;br&gt;
        body: Center(&lt;br&gt;
          child: Column(&lt;br&gt;
            mainAxisAlignment: MainAxisAlignment.center,&lt;br&gt;
            children: [&lt;br&gt;
              ElevatedButton(&lt;br&gt;
                onPressed: () =&amp;gt; context.go('/'),&lt;br&gt;
                child: const Text('Go to home page'),&lt;br&gt;
              ),&lt;br&gt;
            ],&lt;br&gt;
          ),&lt;br&gt;
        ),&lt;br&gt;
      );&lt;br&gt;
}&lt;code&gt;&lt;br&gt;
Or if we need to save old screen in the stack we can use push way only by type context.push('productDetail') such as:&lt;br&gt;
&lt;/code&gt;/// The screen of the home page.&lt;br&gt;
class HomeScreen extends StatelessWidget {&lt;br&gt;
  /// Creates a [Page1Screen].&lt;br&gt;
  const Page1Screen({Key? key}) : super(key: key);&lt;/p&gt;

&lt;p&gt;@override&lt;br&gt;
  Widget build(BuildContext context) =&amp;gt; Scaffold(&lt;br&gt;
        appBar: AppBar(title: const Text(App.title)),&lt;br&gt;
        body: Center(&lt;br&gt;
          child: Column(&lt;br&gt;
            mainAxisAlignment: MainAxisAlignment.center,&lt;br&gt;
            children: [&lt;br&gt;
              ElevatedButton(&lt;br&gt;
                onPressed: () =&amp;gt; context.go('/productDetail'),&lt;br&gt;
                child: const Text('Go to product detail page'),&lt;br&gt;
              ),&lt;br&gt;
            ],&lt;br&gt;
          ),&lt;br&gt;
        ),&lt;br&gt;
      );&lt;br&gt;
}`&lt;br&gt;
&lt;strong&gt;To summarize:&lt;/strong&gt;&lt;br&gt;
If you want to save the current screen in the app in the stack you can use context.push with name of new route. Or if you want to delete it before route you can use context.go with the name of new route.&lt;br&gt;
&lt;strong&gt;References:&lt;/strong&gt;&lt;br&gt;
1- &lt;a href="https://upload.wikimedia.org/wikipedia/commons/thumb/2/29/Data_stack.svg/1200px-Data_stack.svg.png"&gt;https://upload.wikimedia.org/wikipedia/commons/thumb/2/29/Data_stack.svg/1200px-Data_stack.svg.png&lt;/a&gt;&lt;br&gt;
2- &lt;a href="https://pub.dev/packages/go_router"&gt;https://pub.dev/packages/go_router&lt;/a&gt;&lt;/p&gt;

</description>
      <category>flutter</category>
      <category>dart</category>
      <category>navigation2</category>
      <category>goroute</category>
    </item>
    <item>
      <title>How to dispose provider controller and delete it if we do not need it other time in app from code?</title>
      <dc:creator>Mouaz M. Al-Shahmeh</dc:creator>
      <pubDate>Wed, 23 Mar 2022 19:03:23 +0000</pubDate>
      <link>https://forem.com/engmouaz_m_alshahmeh/how-to-dispose-provider-controller-and-delete-it-if-we-do-not-need-it-other-time-in-app-from-code-49fc</link>
      <guid>https://forem.com/engmouaz_m_alshahmeh/how-to-dispose-provider-controller-and-delete-it-if-we-do-not-need-it-other-time-in-app-from-code-49fc</guid>
      <description>&lt;div class="ltag__stackexchange--container"&gt;
  &lt;div class="ltag__stackexchange--title-container"&gt;
    
      &lt;div class="ltag__stackexchange--title"&gt;
        &lt;h1&gt;
          &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7Gn-iPj_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/stackoverflow-logo-b42691ae545e4810b105ee957979a853a696085e67e43ee14c5699cf3e890fb4.svg" alt=""&gt;
            &lt;a href="https://stackoverflow.com/questions/71468007/how-to-dispose-provider-controller-and-delete-it-if-we-do-not-need-it-other-time" rel="noopener noreferrer"&gt;
              How to dispose provider controller and delete it if we do not need it other time in app from code?
            &lt;/a&gt;
        &lt;/h1&gt;
        &lt;div class="ltag__stackexchange--post-metadata"&gt;
          &lt;span&gt;Mar 14 '22&lt;/span&gt;
            &lt;span&gt;Comments: &lt;/span&gt;
            &lt;span&gt;Answers: 1&lt;/span&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;a class="ltag__stackexchange--score-container" href="https://stackoverflow.com/questions/71468007/how-to-dispose-provider-controller-and-delete-it-if-we-do-not-need-it-other-time" rel="noopener noreferrer"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Y9mJpuJP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/stackexchange-arrow-up-eff2e2849e67d156181d258e38802c0b57fa011f74164a7f97675ca3b6ab756b.svg" alt=""&gt;
        &lt;div class="ltag__stackexchange--score-number"&gt;
          0
        &lt;/div&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wif5Zq3z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/stackexchange-arrow-down-4349fac0dd932d284fab7e4dd9846f19a3710558efde0d2dfd05897f3eeb9aba.svg" alt=""&gt;
      &lt;/a&gt;
    
  &lt;/div&gt;
  &lt;div class="ltag__stackexchange--body"&gt;
    
&lt;p&gt;How to delete provider controller if we do not need it other time in app?&lt;/p&gt;
&lt;p&gt;For example, sign in first time screen , or intro screens ... etc
If we do not need it again.&lt;/p&gt;

    
  &lt;/div&gt;
  &lt;div class="ltag__stackexchange--btn--container"&gt;
    
      &lt;a href="https://stackoverflow.com/questions/71468007/how-to-dispose-provider-controller-and-delete-it-if-we-do-not-need-it-other-time" rel="noopener noreferrer"&gt;Open Full Question&lt;/a&gt;
    
  &lt;/div&gt;
&lt;/div&gt;


</description>
    </item>
    <item>
      <title>Importance of Flutter State Management</title>
      <dc:creator>Mouaz M. Al-Shahmeh</dc:creator>
      <pubDate>Sun, 13 Mar 2022 16:37:18 +0000</pubDate>
      <link>https://forem.com/mouaz_m_alshahmeh/importance-of-flutter-state-management-1820</link>
      <guid>https://forem.com/mouaz_m_alshahmeh/importance-of-flutter-state-management-1820</guid>
      <description>&lt;p&gt;&lt;strong&gt;What is Flutter?&lt;br&gt;
Build apps for any screen, Flutter transforms the app development process. Build, test, and deploy beautiful mobile, web, desktop, and embedded apps from a single codebase. (1) Flutter is to flap the wings rapidly. (2)&lt;br&gt;
**What is State Management?&lt;br&gt;
State management refers to the management of the state of one or more user interface controls such as text fields, OK buttons, radio buttons, etc. in a graphical user interface. In this user interface programming technique, the state of one UI control depends on the state of other UI controls. For example, a state managed UI control such as a button will be in the enabled state when input fields have valid input values and the button will be in the disabled state when the input fields are empty or have invalid values. As applications grow, this can end up becoming one of the most complex problems in user interface development. (3) Application state management is the process of maintaining knowledge of an application's inputs across multiple related data flows that form a complete business transaction - or a session - to understand the condition of the app at any given moment. In computer science, an input is information put into the program by the user and state refers to the condition of an application according to its stored inputs - saved as variables or constants. State can also be described as the collection of preserved information that forms a complete session. (4)&lt;br&gt;
**Why is State Management necessary?&lt;br&gt;
State management is essential in aligning and integrating core business applications and the cloud. Without some form of state management, business activities as routine as the purchase of something or a request for information would have to be structured as a single request or response exchange. This could put a significant burden on the user and would almost certainly reduce the effectiveness of the application. In some cases, such as the processing of an order, a stateless exchange could hide critical information like current stock levels, resulting in what could be a significant business impact on the seller and a major inconvenience to the buyer. (5) State Management reflects the efficiency of the system and the care taken by developers to build that system so that every functionality and feature performs smoothly and precisely. State management helps to align and integrate the core business logic inside the application with servers and databases. Without proper state management the burden on users will increase and that would certainly decrease the effectiveness of an application. As well as by centralizing everything with State management, it will be easier to maintain a code base and will in-turn improve the code-quality and readability. (6)&lt;br&gt;
**Flutter State Management&lt;/strong&gt;&lt;br&gt;
Here, Flutter has a different approach to state management. Unlike other frameworks, Flutter tries to rebuild the UI from scratch to reflect the latest changes in the state. Two Google developers from the Flutter development team, Filip Hráček, and Matt Sullivan have presented in a detailed way what pragmatic state management is in Google I/O 2019 conference.(7)&lt;br&gt;
&lt;strong&gt;From imperative to declarative UI&lt;/strong&gt;&lt;br&gt;
There's a shift happening in how mobile apps are built - again. A few years ago, mobile developers moved from languages created in the 1980s and ʼ90s (think Objective-C and Java) toward more modern and expressive programming languages (Swift and Kotlin). Now, we're seeing a transition from imperative to declarative UI frameworks in the form of SwiftUI and Jetpack Compose. This promises to dramatically increase developer productivity, enabling us to build apps faster with less code. Declarative UI requires thinking about app development from a new perspective. Declarative UI requires thinking about app development from a new perspective, accepting that it's okay to rebuild parts of your UI from scratch instead of modifying them. Modern CPUs are fast enough to do so, and can even handle animations. In a declarative framework, changes in state trigger a rebuild of the UI, which removes a whole category of state-related bugs and makes it easier to reason about updates. You describe what the UI should look like for a given state, and the framework figures out how to do it using sensible defaults and context. This greatly reduces the amount of code you need to write and makes it easier to iterate.(9)&lt;br&gt;
(10)Theory kinds of states&lt;br&gt;
At any point in time of the flutter application lifecycle, your application will be in either of two below states :&lt;br&gt;
a. Local / Ephemeral State&lt;br&gt;
b. Shared / App state&lt;br&gt;
(11)Local State&lt;br&gt;
Whenever you need to change the state of a single page view which may contain UI controls or animation then it is considered as a local state. You can easily do that using the Stateful widget.&lt;br&gt;
Shared App State&lt;br&gt;
Whenever you need to change the state of multiple widgets which are shared across your application then it is Share app State.&lt;br&gt;
&lt;strong&gt;Categorize of Flutter State Management ways&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Provider
A wrapper around InheritedWidget to make them easier to use and more reusable. By using provider instead of manually writing InheritedWidget, you get: simplified allocation/disposal of resources lazy-loading a vastly reduced boilerplate over making a new class every time devtool friendly - using Provider, the state of your application will be visible in the Flutter devtool a common way to consume these InheritedWidgets (See Provider.of/Consumer/Selector) increased scalability for classes with a listening mechanism that grows exponentially in complexity (such as ChangeNotifier, which is O(N) for dispatching notifications).(12)&lt;/li&gt;
&lt;li&gt;setState
You need to learn about stateful or stateless in Flutter and the difference between them to detect setstate but there are more wisdom state management ways such as provider.&lt;/li&gt;
&lt;li&gt;Inherited Widget &amp;amp; Inherited Model
An InheritedModel is a way of sharing data across your whole app, the same as InheritedWidget. An InheritedModel is a subclass of InheritedWidget, so it works the same in those instances, but adds some extra useful functionality. (13)&lt;/li&gt;
&lt;li&gt;Redux&lt;/li&gt;
&lt;li&gt;Fish Redux&lt;/li&gt;
&lt;li&gt;GetIt&lt;/li&gt;
&lt;li&gt;MobX
At the heart of MobX are three important concepts: Observables, Actions and Reactions.
(14)8. Riverpod
Improvement over provider way of state management, A Reactive Caching and Data-binding Framework. (15)&lt;/li&gt;
&lt;li&gt;GetX
GetX is an extra-light and powerful solution for Flutter. It combines high-performance state management, intelligent dependency injection, and route management quickly and practically. (16)&lt;/li&gt;
&lt;li&gt;BLoC pattern
Bloc is a design pattern created by Google to help separate business logic from the presentation layer and enable a developer to reuse code more efficiently. (17)
(18)&lt;/li&gt;
&lt;li&gt;&lt;p&gt;MVVM&lt;br&gt;
Writing maintainable and clean code requires strategies like segregating responsibilities into different layers. There are various software architectural patterns that streamline the code organization into separate layers like MVC, MVP, MVVM, etc. MVVM is quite a common design pattern in writing UI based applications in general. A Model-View-Viewmodel mainly concerns these layers:&lt;br&gt;
View: Responsible for visuals like UI elements on the screen&lt;br&gt;
Model: It can be a Repository that takes care of managing data across the services like Database, Network, etc&lt;br&gt;
ViewModel: It acts as a mediator to View &amp;amp; Model. The key responsibilities of this layer are in-taking actions, processing data and giving back the new state to the View layer.&lt;br&gt;
(19)&lt;br&gt;
&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
In this article, we talked about the definition of Flutter and the definition of State Management and its management in Flutter and about the most famous techniques used in State Management, their positives and negatives, and the door to development continues in this section because through State Management, Flutter technology is developed day after day to become a fierce competitor to the applications of the native over platforms.&lt;br&gt;
&lt;strong&gt;References&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://flutter.dev/"&gt;https://flutter.dev/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.merriam-webster.com/dictionary/flutter"&gt;https://www.merriam-webster.com/dictionary/flutter&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://redux.js.org/"&gt;https://redux.js.org/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.techtarget.com/searchapparchitecture/definition/state-management"&gt;https://www.techtarget.com/searchapparchitecture/definition/state-management&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.techtarget.com/searchapparchitecture/definition/state-management"&gt;https://www.techtarget.com/searchapparchitecture/definition/state-management&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://medium.com/dhiwise/7-things-you-need-to-know-about-flutter-state-management-42f840ef022e"&gt;https://medium.com/dhiwise/7-things-you-need-to-know-about-flutter-state-management-42f840ef022e&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=d_m5csmrf7I"&gt;https://www.youtube.com/watch?v=d_m5csmrf7I&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.flutter.dev/development/data-and-backend/state-mgmt/intro"&gt;https://docs.flutter.dev/development/data-and-backend/state-mgmt/intro&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://increment.com/mobile/the-shift-to-declarative-ui/"&gt;https://increment.com/mobile/the-shift-to-declarative-ui/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.flutter.dev/development/data-and-backend/state-mgmt/declarative"&gt;https://docs.flutter.dev/development/data-and-backend/state-mgmt/declarative&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.flutter.dev/development/data-and-backend/state-mgmt/ephemeral-vs-app"&gt;https://docs.flutter.dev/development/data-and-backend/state-mgmt/ephemeral-vs-app&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://pub.dev/packages/provider"&gt;https://pub.dev/packages/provider&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://flutter.institute/sharing-data-inheritedmodel-vs-inheritedwidget"&gt;https://flutter.institute/sharing-data-inheritedmodel-vs-inheritedwidget&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://mobx.netlify.app/concepts/"&gt;https://mobx.netlify.app/concepts/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://riverpod.dev/"&gt;https://riverpod.dev/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://pub.dev/packages/get"&gt;https://pub.dev/packages/get&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.mitrais.com/news-updates/getting-started-with-flutter-bloc-pattern/"&gt;https://www.mitrais.com/news-updates/getting-started-with-flutter-bloc-pattern/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.raywenderlich.com/4074597-getting-started-with-the-bloc-pattern"&gt;https://www.raywenderlich.com/4074597-getting-started-with-the-bloc-pattern&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://jayrambhia.com/blog/android-mvvm-intro"&gt;https://jayrambhia.com/blog/android-mvvm-intro&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>flutter</category>
      <category>dart</category>
    </item>
  </channel>
</rss>
