init method

void init(
  1. View homeView,
  2. List<View> views, {
  3. String nodeSelector = 'body',
})

Implementation

void init(View homeView, List<View> views, {String nodeSelector = 'body'}) {
  this.homeView = homeView;
  registerView(homeView);
  views.forEach(registerView);
  window.onHashChange.listen((event) {
    if (event is HashChangeEvent) {
      var oldUrl = event.oldUrl ?? '';
      var newUrl = event.newUrl ?? '';
      if (oldUrl.contains(urlStateDivider)) {
        oldUrl = oldUrl.substring(0, oldUrl.indexOf(urlStateDivider));
      }
      if (newUrl.contains(urlStateDivider)) {
        newUrl = newUrl.substring(0, newUrl.indexOf(urlStateDivider));
      }
      if (newUrl != oldUrl) {
        openPath(window.location.hash.replaceFirst('#', ''));
      }
    }
  });
  if (window.location.hash.isEmpty) {
    openView(homeView);
  } else {
    final openUrl = window.location.hash.replaceFirst('#', '');
    openPath(openUrl);
  }
  if (!insertedToPage) {
    insertToPage(nodeSelector: nodeSelector);
  }
}