| // Copyright 2014 The Flutter Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| import 'dart:async'; |
| import 'dart:ui' as ui; |
| |
| /// Signature of an html event listener. |
| /// |
| /// We have to redefine it because non-web platforms can't import dart:html. |
| typedef EventListener = dynamic Function(Object event); |
| |
| /// Represents and reads route state from the browser's URL. |
| /// |
| /// By default, the [HashUrlStrategy] subclass is used if the app doesn't |
| /// specify one. |
| abstract class UrlStrategy { |
| /// Abstract const constructor. This constructor enables subclasses to provide |
| /// const constructors so that they can be used in const expressions. |
| const UrlStrategy(); |
| |
| /// Adds a listener to the `popstate` event and returns a function that, when |
| /// invoked, removes the listener. |
| ui.VoidCallback addPopStateListener(EventListener fn); |
| |
| /// Returns the active path in the browser. |
| String getPath(); |
| |
| /// The state of the current browser history entry. |
| /// |
| /// See: https://developer.mozilla.org/en-US/docs/Web/API/History/state |
| Object? getState(); |
| |
| /// Given a path that's internal to the app, create the external url that |
| /// will be used in the browser. |
| String prepareExternalUrl(String internalUrl); |
| |
| /// Push a new history entry. |
| /// |
| /// See: https://developer.mozilla.org/en-US/docs/Web/API/History/pushState |
| void pushState(Object? state, String title, String url); |
| |
| /// Replace the currently active history entry. |
| /// |
| /// See: https://developer.mozilla.org/en-US/docs/Web/API/History/replaceState |
| void replaceState(Object? state, String title, String url); |
| |
| /// Moves forwards or backwards through the history stack. |
| /// |
| /// A negative [count] value causes a backward move in the history stack. And |
| /// a positive [count] value causes a forward move. |
| /// |
| /// Examples: |
| /// |
| /// * `go(-2)` moves back 2 steps in history. |
| /// * `go(3)` moves forward 3 steps in history. |
| /// |
| /// See: https://developer.mozilla.org/en-US/docs/Web/API/History/go |
| Future<void> go(int count); |
| } |
| |
| /// Encapsulates all calls to DOM apis, which allows the [UrlStrategy] classes |
| /// to be platform agnostic and testable. |
| /// |
| /// For convenience, the [PlatformLocation] class can be used by implementations |
| /// of [UrlStrategy] to interact with DOM apis like pushState, popState, etc. |
| abstract class PlatformLocation { |
| /// Abstract const constructor. This constructor enables subclasses to provide |
| /// const constructors so that they can be used in const expressions. |
| const PlatformLocation(); |
| |
| /// Registers an event listener for the `popstate` event. |
| /// |
| /// See: https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onpopstate |
| void addPopStateListener(EventListener fn); |
| |
| /// Unregisters the given listener (added by [addPopStateListener]) from the |
| /// `popstate` event. |
| /// |
| /// See: https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onpopstate |
| void removePopStateListener(EventListener fn); |
| |
| /// The `pathname` part of the URL in the browser address bar. |
| /// |
| /// See: https://developer.mozilla.org/en-US/docs/Web/API/Location/pathname |
| String get pathname; |
| |
| /// The `query` part of the URL in the browser address bar. |
| /// |
| /// See: https://developer.mozilla.org/en-US/docs/Web/API/Location/search |
| String get search; |
| |
| /// The `hash` part of the URL in the browser address bar. |
| /// |
| /// See: https://developer.mozilla.org/en-US/docs/Web/API/Location/hash |
| String get hash; |
| |
| /// The `state` in the current history entry. |
| /// |
| /// See: https://developer.mozilla.org/en-US/docs/Web/API/History/state |
| Object? get state; |
| |
| /// Adds a new entry to the browser history stack. |
| /// |
| /// See: https://developer.mozilla.org/en-US/docs/Web/API/History/pushState |
| void pushState(Object? state, String title, String url); |
| |
| /// Replaces the current entry in the browser history stack. |
| /// |
| /// See: https://developer.mozilla.org/en-US/docs/Web/API/History/replaceState |
| void replaceState(Object? state, String title, String url); |
| |
| /// Moves forwards or backwards through the history stack. |
| /// |
| /// A negative [count] value causes a backward move in the history stack. And |
| /// a positive [count] value causes a forward move. |
| /// |
| /// Examples: |
| /// |
| /// * `go(-2)` moves back 2 steps in history. |
| /// * `go(3)` moves forward 3 steps in history. |
| /// |
| /// See: https://developer.mozilla.org/en-US/docs/Web/API/History/go |
| void go(int count); |
| |
| /// The base href where the Flutter app is being served. |
| /// |
| /// See: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/base |
| String? getBaseHref(); |
| } |