// Copyright 2021, the Flutter project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. import 'package:flutter/widgets.dart'; import 'parsed_route.dart'; import 'parser.dart'; /// The current route state. To change the current route, call obtain the state /// using `RouteStateScope.of(context)` and call `go()`: /// /// ``` /// RouteStateScope.of(context).go('/book/2'); /// ``` class RouteState extends ChangeNotifier { final AppRouteParser _parser; ParsedRoute _route; RouteState(this._parser,{String initial=''}) : _route = ParsedRoute(initial,{}); ParsedRoute get route => _route; set route(ParsedRoute route) { // Don't notify listeners if the path hasn't changed. if (_route == route) return; _route = route; notifyListeners(); } Future go(String route) async { this.route = await _parser .parseRouteInformation(RouteInformation(uri: Uri.parse(route))); } } // /// Provides the current [RouteState] to descendant widgets in the tree. // class RouteStateScope extends InheritedNotifier { // const RouteStateScope({ // required super.notifier, // required super.child, // super.key, // }); // // static RouteState of(BuildContext context) => // context.dependOnInheritedWidgetOfExactType()!.notifier!; // }