From e8a3d4c222a677b64ad4046f821ab5a74cee685f Mon Sep 17 00:00:00 2001 From: li3317 <li3317@purdue.edu> Date: Mon, 1 Mar 2021 11:39:44 -0500 Subject: [PATCH] close _keyboardVisibilityController.onChange in dispose --- lib/widgets/raw_editor.dart | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/lib/widgets/raw_editor.dart b/lib/widgets/raw_editor.dart index 2ae65da4..294dd2d8 100644 --- a/lib/widgets/raw_editor.dart +++ b/lib/widgets/raw_editor.dart @@ -1,3 +1,4 @@ +import 'dart:async'; import 'dart:convert'; import 'package:flutter/cupertino.dart'; @@ -125,6 +126,7 @@ class RawEditorState extends EditorState CursorCont _cursorCont; ScrollController _scrollController; KeyboardVisibilityController _keyboardVisibilityController; + StreamSubscription<bool> _keyboardVisibilitySubscription; KeyboardListener _keyboardListener; bool _didAutoFocus = false; bool _keyboardVisible = false; @@ -698,12 +700,13 @@ class RawEditorState extends EditorState ); _keyboardVisibilityController = KeyboardVisibilityController(); - _keyboardVisibilityController.onChange.listen((bool visible) { - _keyboardVisible = visible; - if (visible) { - _onChangeTextEditingValue(); - } - }); + _keyboardVisibilitySubscription = + _keyboardVisibilityController.onChange.listen((bool visible) { + _keyboardVisible = visible; + if (visible) { + _onChangeTextEditingValue(); + } + }); _focusAttachment = widget.focusNode.attach(context, onKey: (node, event) => _keyboardListener.handleRawKeyEvent(event)); @@ -865,6 +868,7 @@ class RawEditorState extends EditorState @override void dispose() { closeConnectionIfNeeded(); + _keyboardVisibilitySubscription.cancel(); assert(!hasConnection); _selectionOverlay?.dispose(); _selectionOverlay = null;