Flutter has an imperative routing mechanism, the Navigator widget, and a more idiomatic declarative routing mechanism (which is similar to build methods as used with widgets), the Router widget . The two systems can be used together (indeed, the declarative system is built using the imperative system).