[webview_flutter_wkwebview] Prevent crash from released deallocCallback (#6131)

diff --git a/packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md b/packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md
index 72fab85..5d44502 100644
--- a/packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md
+++ b/packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 2.9.2
+
+* Fixes crash when an Objective-C object in `FWFInstanceManager` is released, but the dealloc
+  callback is no longer available.
+
 ## 2.9.1
 
 * Fixes regression where the behavior for the `UIScrollView` insets were removed.
diff --git a/packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFInstanceManagerTests.m b/packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFInstanceManagerTests.m
index 2ad4bd4..c893ab5 100644
--- a/packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFInstanceManagerTests.m
+++ b/packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFInstanceManagerTests.m
@@ -39,4 +39,17 @@
   XCTAssertEqualObjects([instanceManager removeInstanceWithIdentifier:0], object);
   XCTAssertEqual([instanceManager strongInstanceCount], 0);
 }
+
+- (void)testDeallocCallbackIsIgnoredIfNull {
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wnonnull"
+  // This sets deallocCallback to nil to test that uses are null checked.
+  FWFInstanceManager *instanceManager = [[FWFInstanceManager alloc] initWithDeallocCallback:nil];
+#pragma clang diagnostic pop
+
+  [instanceManager addDartCreatedInstance:[[NSObject alloc] init] withIdentifier:0];
+
+  // Tests that this doesn't cause a EXC_BAD_ACCESS crash.
+  [instanceManager removeInstanceWithIdentifier:0];
+}
 @end
diff --git a/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFInstanceManager.m b/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFInstanceManager.m
index 1fe04a3..e87a403 100644
--- a/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFInstanceManager.m
+++ b/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFInstanceManager.m
@@ -40,7 +40,9 @@
 }
 
 - (void)dealloc {
-  _callback(_identifier);
+  if (_callback) {
+    _callback(_identifier);
+  }
 }
 @end
 
diff --git a/packages/webview_flutter/webview_flutter_wkwebview/pubspec.yaml b/packages/webview_flutter/webview_flutter_wkwebview/pubspec.yaml
index 446f909..c7f5ffb 100644
--- a/packages/webview_flutter/webview_flutter_wkwebview/pubspec.yaml
+++ b/packages/webview_flutter/webview_flutter_wkwebview/pubspec.yaml
@@ -2,7 +2,7 @@
 description: A Flutter plugin that provides a WebView widget based on Apple's WKWebView control.
 repository: https://github.com/flutter/plugins/tree/main/packages/webview_flutter/webview_flutter_wkwebview
 issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+webview%22
-version: 2.9.1
+version: 2.9.2
 
 environment:
   sdk: ">=2.17.0 <3.0.0"