{"repo":"PlugFox/octopus","free":true,"listed":false,"github":"https://github.com/PlugFox/octopus","clone":"git clone https://github.com/PlugFox/octopus.git","description":"A cross-platform declarative router for Flutter with a focus on state and nested navigation. Made with ❤️ by PlugFox.","language":"Dart","stars":103,"topics":["application","cross-platform","dart","flutter","navigation","router","routing"],"license":"MIT","category":"mobile-apps","readme_excerpt":"Octopus: A Declarative Router for Flutter Octopus is a declarative router for Flutter. Its main concept and distinction from other solutions is dynamic navigation through state mutations. It is a TRULY DECLARATIVE router, where you don’t change the state imperatively using push and pop commands. Instead, you (or the user) specify the desired outcome through state mutations or the address bar, and the router delivers a predictably expected result. Most solutions use templating for navigation, pre-describing all possible router states with hardcoding (and code generation). While this is an expected and predictable approach in traditional BE SSR (where the page is assembled server-side), it has several serious drawbacks on the client side: 1. You cannot predict all possible states in advance. 2. There is no ability to implement routes of arbitrary depth (e.g., /shop/category id=1/category id=12/category id=123/product id=1234 ). 3. Understanding what happens in cases with nested routes can be quite complex. 4. Loss of state in nested routes, as such routers typically display only the active route, even though the nested state continues to exist. What does the current solution offer? 1. Changing state through mutation. 2. Nested navigation, both through the out-of-the-box solution and your custom implementation. 3. A router state machine and case implementation based on state changes. For example, it’s very easy to implement breadcrumbs or integrate a tab/sidebar with router stat","default_branch":null,"files":null,"tree":[],"storefront":"/r/PlugFox","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/PlugFox/octopus/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}