Prechádzať zdrojové kódy

fix: dispose TerminalController and ScrollController

Georg Wechslberger 3 rokov pred
rodič
commit
9f064995e9
1 zmenil súbory, kde vykonal 12 pridanie a 0 odobranie
  1. 12 0
      lib/src/terminal_view.dart

+ 12 - 0
lib/src/terminal_view.dart

@@ -163,9 +163,15 @@ class TerminalViewState extends State<TerminalView> {
       _focusNode = widget.focusNode ?? FocusNode();
     }
     if (oldWidget.controller != widget.controller) {
+      if (oldWidget.controller == null) {
+        _controller.dispose();
+      }
       _controller = widget.controller ?? TerminalController();
     }
     if (oldWidget.scrollController != widget.scrollController) {
+      if (oldWidget.scrollController == null) {
+        _scrollController.dispose();
+      }
       _scrollController = widget.scrollController ?? ScrollController();
     }
     super.didUpdateWidget(oldWidget);
@@ -176,6 +182,12 @@ class TerminalViewState extends State<TerminalView> {
     if (widget.focusNode == null) {
       _focusNode.dispose();
     }
+    if (widget.controller == null) {
+      _controller.dispose();
+    }
+    if (widget.scrollController == null) {
+      _scrollController.dispose();
+    }
     _shortcutManager.dispose();
     super.dispose();
   }