Преглед на файлове

fix: only dispose the FocusNodes which TerminalView creates

Georg Wechslberger преди 3 години
родител
ревизия
ee75744f69
променени са 1 файла, в които са добавени 6 реда и са изтрити 1 реда
  1. 6 1
      lib/src/terminal_view.dart

+ 6 - 1
lib/src/terminal_view.dart

@@ -153,6 +153,9 @@ class TerminalViewState extends State<TerminalView> {
   @override
   @override
   void didUpdateWidget(TerminalView oldWidget) {
   void didUpdateWidget(TerminalView oldWidget) {
     if (oldWidget.focusNode != widget.focusNode) {
     if (oldWidget.focusNode != widget.focusNode) {
+      if (oldWidget.focusNode == null) {
+        _focusNode.dispose();
+      }
       _focusNode = widget.focusNode ?? FocusNode();
       _focusNode = widget.focusNode ?? FocusNode();
     }
     }
     if (oldWidget.controller != widget.controller) {
     if (oldWidget.controller != widget.controller) {
@@ -166,7 +169,9 @@ class TerminalViewState extends State<TerminalView> {
 
 
   @override
   @override
   void dispose() {
   void dispose() {
-    _focusNode.dispose();
+    if (widget.focusNode == null) {
+      _focusNode.dispose();
+    }
     _shortcutManager.dispose();
     _shortcutManager.dispose();
     super.dispose();
     super.dispose();
   }
   }