Voyager: Navigation and DI for Flutter
summary
Voyager is a Flutter widget router that reads a YAML configuration map and turns paths into widgets via a custom plugin architecture, using dependency injection via provider for per-screen state and a Bloc plugin for lifecycle and disposal. It adds code generation for typed path constants, generated test scaffolds (pushing a sample app’s widget test coverage to over 70%), supports deep links, runtime A/B via remote config, runtime arguments and mapping arbitrary classes to widgets, and is published on pub.dev.
AI-written summary · about
chapters (21)
- 0:00Introduction to Voyager
- 1:11Sample app requirements
- 2:13YAML navigation structure
- 3:17Router and config basics
- 4:22Creating a plugin
- 5:26Integrating plugins
- 6:09Using Voyager embed API
- 7:13Dependency injection with Provider
- 8:35Code generation setup
- 9:20Generating Dart constants
- 10:24Widget tests with codegen
- 12:31Schema validation for safety
- 13:53Type-safe Voyager provider
- 14:35Plugin code generation
- 15:21Reusable widget paths
- 16:24Remote config with buttons
- 17:07Navigation with arguments
- 18:09Mapping classes to widgets
- 19:42Dynamic list views
- 20:02State management with BLoC
- 22:53Summary and benefits
related talks
21mNavigation in Flutter - the not-so-obvious parts
27mBuilding Google Maps Navigation for Flutter
34mFrom Plug-and-Play to Fully Custom
32mBuilding Flutter apps in Lego style
40mHow I met Flutter
30mNested Navigation in flutter web
37mBuilding scalable, maintainable and robust apps in Flutter
47mFlutter Navigation 2.0 in Real Life
