Im-Kevin / cool_ui

用flutter实现一些我认为好看的UI控件,有Popover,仿Weui的Toast,自定义键盘
Apache License 2.0
460 stars 74 forks source link

同一个页面两个输入框切换输入报错 #82

Open Xmaoyh opened 2 years ago

Xmaoyh commented 2 years ago

`======== Exception caught by gesture =============================================================== The following assertion was thrown while handling a gesture: A KeyboardController was used after being disposed.

Once you have called dispose() on a KeyboardController, it can no longer be used. When the exception was thrown, this was the stack:

0 ChangeNotifier._debugAssertNotDisposed. (package:flutter/src/foundation/change_notifier.dart:114:9)

1 ChangeNotifier._debugAssertNotDisposed (package:flutter/src/foundation/change_notifier.dart:120:6)

2 ChangeNotifier.notifyListeners (package:flutter/src/foundation/change_notifier.dart:288:12)

3 ValueNotifier.value= (package:flutter/src/foundation/change_notifier.dart:412:5)

4 KeyboardController.value= (package:cool_ui/keyboards/keyboard_controller.dart:50:11)

5 KeyboardController.addText (package:cool_ui/keyboards/keyboard_controller.dart:107:5)`

输入完一个再点击另一个输入时,报错。

Xmaoyh commented 2 years ago

一种解决方法是注册两个键盘,每个输入框一个

Im-Kevin commented 2 years ago

这两个是同一个键盘吗

Xmaoyh commented 2 years ago

这两个是同一个键盘吗

是的

jianchao97 commented 11 months ago

Hi,

I encounter the same error when I convert my keyboard become Stateful Widget and assign the keyboard controller to a late variable. image

However, I am able to resolve the error if I remove the late variable and directly use the widget.controller. image

I'm not sure what is the root cause and why the error was gone after removing the late variable. Maybe you can try to do the same thing to eliminate the error.

Please also share me if you found the reason or root cause.

Thankss!