Implementing the navigation for complex multi-platform applications can be challenging due to varied user interface patterns and navigation structures across different platforms. Flutter’s Navigator 2.0, designed to streamline these complexities, offers a robust framework that empowers developers to manage navigation declaratively. While the Navigator 2.0 API may initially seem advanced and complex, understanding its interplay with the Router and Navigator widgets unlocks powerful customization and flexibility options. In this hands-on workshop, participants will dive deep into integrating the Model-View-ViewModel (MVVM) pattern in a layered architecture with Flutter’s Navigator 2.0 to create clear and efficient navigation management within their apps.
Workshop participants will embark on building a Flutter application from the ground up, learning to:
🔵 Implement the MVVM architectural pattern in conjunction with Flutter’s Router widget to achieve reactive and declarative navigation.
🔵 Design and manage the application’s navigation stack as an application state.
🔵 Utilize both declarative and imperative approaches to control modal route visibility.
🔵 Synchrozie the browser address bar and the app state for Flutter Web apps.
🔵 Synchronize imperative calls and declarative state changes to maintain consistent application state.
🔵 Integrate a bottom navigation bar selected tab management into the routing system.
🔵 Handle Android specific user interactions like back swipes and operating system back button presses.
🔵 Customize the SystemUIOverlayStyle to dynamically adjust UI elements like the status bar and navigation bar colors based on the active route.
🔵 Apply a layered approach to software architecture using MVVM principles to separate the concerns and build a maintainable, testable, and scalable app.
This workshop will equip developers with the skills to architect sophisticated navigation systems in Flutter applications, leveraging the advanced capabilities of Navigator 2.0 and the MVVM pattern for scalable and maintainable app development.