更换Flutter Quill版本并升级Flutter后仍报错无法运行
问题解决:flutter_quill 5.4.2与升级后Flutter SDK的兼容报错
报错信息
flutter_quill-5.4.2/lib/src/widgets/raw_editor.dart:233:7: Error: The non-abstract class 'RawEditorState' is missing implementations for these members:
- TextInputClient.didChangeInputControl
- TextInputClient.performSelector
Try to either- provide an implementation,
- inherit an implementation from a superclass or mixin,
- mark the class as abstract, or
- provide a 'noSuchMethod' implementation.
class RawEditorState extends EditorState ^^^^^^^^^^^^^^ /C:/src/flutter/packages/flutter/lib/src/services/text_input.dart:1163:8: Context: 'TextInputClient.didChangeInputControl'is defined here. void didChangeInputControl(TextInputControl? oldControl, TextInputControl? newControl){} ^^^^^^^^^^^^^^^^^^^^^ /C:/src/flutter/packages/flutter/lib/src/services/text_input.dart:1184:8: Context: 'TextInputClient.performSelector' is defined here. void performSelector(String selectorName){} ^^^^^^^^^^^^^^^
核心原因
升级后的Flutter SDK给TextInputClient接口新增了didChangeInputControl和performSelector两个强制实现的方法,但flutter_quill 5.4.2版本未适配该变更,导致接口实现不完整触发报错。
解决方案
方案1:升级flutter_quill到兼容版本(推荐)
- 打开项目根目录的
pubspec.yaml,将flutter_quill的版本修改为^6.0.0或更高(6.x及以上版本已适配Flutter SDK的新接口要求) - 执行命令:
flutter pub get
方案2:临时手动修复(仅应急用)
- 找到本地flutter_quill包的
raw_editor.dart文件(路径对应报错中的flutter_quill-5.4.2/lib/src/widgets/raw_editor.dart) - 在
RawEditorState类中添加两个方法的空实现:
@override void didChangeInputControl(TextInputControl? oldControl, TextInputControl? newControl) {} @override void performSelector(String selectorName) {}
- 注意:此修改为临时方案,后续执行
flutter pub get会被覆盖,不建议长期使用
方案3:回退Flutter SDK到兼容版本
- 执行命令回退到与flutter_quill 5.4.2兼容的Flutter版本(如3.13.x系列):
flutter downgrade 3.13.9 - 回退后重新运行项目
内容的提问来源于stack exchange,提问作者Muhammad Faruq
相关产品推荐
相关产品推荐

