Flutter Navigator _RouteEntry

The _RouteEntry class in Flutter, typically an internal class indicated by the leading underscore in its name, serves as a crucial component in the Flutter navigation system. It's not part of the public API, but understanding its role can provide deeper insights into how navigation works in Flutter.

Core Functionality and Role

  1. Representation of Route in Navigator's Stack: _RouteEntry acts as a container or wrapper for a Route within the Navigator's internal stack. Each _RouteEntry corresponds to a Route that has been pushed onto the Navigator.

  2. Lifecycle State Tracking: It tracks the lifecycle state of the Route it contains. This includes states like whether the route is currently being pushed, popped, or is idle.

  3. Transition Management: _RouteEntry plays a key role in managing the transitions and animations as the Route enters or exits the screen.

    1. It coordinates the animations and ensures they are in sync with the route's current state.
    2. _RouteEntry extends _RouteEntry class.
  4. Result Handling: It also handles the result of a route when it's popped. This is important for scenarios where routes return data upon being popped.

  5. Overlay Management: Since routes often have associated Overlay entries (for displaying the route's UI), _RouteEntry helps manage these Overlay entries, including their insertion and removal from the Overlay.


_history field of NavigatorState


List<_RouteEntry> _history = <_RouteEntry>[];

Core Functionality:

  1. Route Stack Management: The _history list in NavigatorState serves as the stack that holds the routes managed by the Navigator. Each item in this list is an instance of _RouteEntry, which, as previously discussed, represents a Route along with its lifecycle state and overlay entries.

  2. Order and Navigation Logic: The order of the _RouteEntry objects in the _history list defines the navigation stack. The last item in the list represents the topmost route in the Navigator, which is the currently visible route if the app is running.

  3. Transition and State Tracking: As routes are pushed and popped from the Navigator, _RouteEntry objects are added to or removed from the _history. This process is accompanied by the appropriate state transitions and animations for each route, as dictated by their respective _RouteEntry instances.

  4. Lifecycle Management: _history helps manage the lifecycle of routes. When a new route is pushed, a new _RouteEntry is created and added to this list. When a route is popped, its corresponding _RouteEntry is removed, and the route undergoes its exit animation and eventual disposal.

Usage in NavigatorState:


本文链接:Flutter Navigator _RouteEntry

版权声明:如无特别声明,本文即为原创文章,版权归 Maeiee 所有,未经允许不得转载!