dispose method

  1. @override
void dispose()
override

Implementation

@override
void dispose() {
  _isDisposed = true;

  // Clear cache first
  _objectCache.clear();

  // Batch destroy all tracked objects
  // Use toList() to create a copy, because dispose() might modify the set via unregisterObject
  for (final token in _activeTokens.toList()) {
    if (!token.isDisposed) {
      token.isDisposed = true;
      _ffi.freeObject(_handle, token.handle);
      _ffi.freeQjsResult(token.handle);
    }
  }
  _activeTokens.clear();

  instances.remove(_handle.address);
  JSObject.clearContextState(_handle.address);
  print('js context dispose');
  _ffi.destroyContext(_handle);
}