dispose method
Disposes the headless browser
Implementation
Future<void> dispose() async {
if (_isDisposed) {
// Already disposed, do nothing
return;
}
_isDisposed = true;
try {
// Cancel any pending page load
_pageLoadCompleter?.completeError(
ScrapingException.validation(
'Browser disposed during page load',
isRetryable: false,
),
);
// Clear references first
final headlessWebView = _headlessWebView;
_headlessWebView = null;
_controller = null;
// Then dispose the web view if it exists
if (headlessWebView != null) {
await headlessWebView.dispose();
}
} catch (e) {
_log('Error during disposal: $e', isError: true);
}
}