unload method

Future<void> unload()

Implementation

Future<void> unload() async {
  assert(!_view._disposed, 'Kraken have already disposed');
  // Should clear previous page cached ui commands
  clearUICommand(_view.contextId);

  // Wait for next microtask to make sure C++ native Elements are GC collected.
  Completer completer = Completer();
  Future.microtask(() {
    _module.dispose();
    _view.dispose();

    allocateNewPage(_view.contextId);

    _view = KrakenViewController(view.viewportWidth, view.viewportHeight,
      background: _view.background,
      enableDebug: _view.enableDebug,
      contextId: _view.contextId,
      rootController: this,
      navigationDelegate: _view.navigationDelegate,
      gestureListener: _view.gestureListener,
      widgetDelegate: _view.widgetDelegate,
      originalViewport: _view.viewport
    );

    _module = KrakenModuleController(this, _view.contextId);

    completer.complete();
  });

  return completer.future;
}