diff --git a/lib/src/code_field/code_controller.dart b/lib/src/code_field/code_controller.dart index a63ef50f..adbe8b2d 100644 --- a/lib/src/code_field/code_controller.dart +++ b/lib/src/code_field/code_controller.dart @@ -125,6 +125,8 @@ class CodeController extends TextEditingController { @visibleForTesting TextSpan? lastTextSpan; + bool _disposed = false; + late final actions = >{ CommentUncommentIntent: CommentUncommentAction(controller: this), CopySelectionTextIntent: CopyAction(controller: this), @@ -233,6 +235,10 @@ class CodeController extends TextEditingController { return; } + if (_disposed) { + return; + } + analysisResult = result; _lastAnalyzedText = codeSentToAnalysis.text; notifyListeners(); @@ -971,6 +977,7 @@ class CodeController extends TextEditingController { @override void dispose() { + _disposed = true; _debounce?.cancel(); historyController.dispose(); searchController.dispose(); diff --git a/lib/src/code_field/code_field.dart b/lib/src/code_field/code_field.dart index ab2a38fc..87e527a3 100644 --- a/lib/src/code_field/code_field.dart +++ b/lib/src/code_field/code_field.dart @@ -261,6 +261,9 @@ class _CodeFieldState extends State { disableSpellCheckIfWeb(); WidgetsBinding.instance.addPostFrameCallback((_) { + if(!mounted){ + return; + } final double width = _codeFieldKey.currentContext!.size!.width; final double height = _codeFieldKey.currentContext!.size!.height; windowSize = Size(width, height); @@ -312,6 +315,9 @@ class _CodeFieldState extends State { void rebuild() { setState(() { WidgetsBinding.instance.addPostFrameCallback((_) { + if(!mounted){ + return; + } // For some reason _codeFieldKey.currentContext is null in tests // so check first. final context = _codeFieldKey.currentContext;