Flutter中Summernote文本编辑器滚动问题求助及代码排查
问题分析与解决建议
你的代码本身没有语法错误,滚动功能失效多半是布局层级或组件配置的问题,以下是具体排查思路和解决办法:
确认组件自身滚动逻辑
FlutterSummernote设置固定height后,内部默认应该自带垂直滚动,但如果外层布局的约束把滚动给抑制了,就会失效。外层嵌套滚动容器(推荐方案)
如果组件自身滚动不生效,直接把FlutterSummernote包在SingleChildScrollView里就行,同时注意调整外层可能冲突的布局:SingleChildScrollView( child: SizedBox( height: 450, // 保留原高度设置 child: FlutterSummernote( widthImage: '40%', hasAttachment: true, hint: "Your text here...", key: _keyWhatToDo, customToolbar: """ [ ['style', ['bold', 'italic', 'underline']], ['font', ['strikethrough']], ['fontsize', ['fontsize']], ['color', ['color']], ['para', ['ul', 'ol', 'paragraph']], ]""" ), ), )检查外层布局约束
如果你的FlutterSummernote是放在Column、ListView这类自带滚动的组件里,得给它套个Expanded或Flexible来约束高度,避免滚动冲突:Column( children: [ // 其他页面组件 Expanded( child: FlutterSummernote( // 你的原有配置 height: double.infinity, // 改成自适应高度,由Expanded控制 ), ), ], )尝试禁用组件内部滚动(极端情况)
如果上面的方法都不管用,可以试试禁用Summernote内部的滚动,完全靠外层容器来滚动。因为FlutterSummernote本质是基于WebView实现的,可以通过WebView配置来调整:FlutterSummernote( // 原有配置 webViewConfiguration: WebViewConfiguration( javascriptMode: JavascriptMode.unrestricted, // 通过初始HTML禁用内部滚动 initialUrl: 'data:text/html;charset=utf-8,<html><body><div id="summernote" style="overflow: hidden;"></div></body></html>', ), )
内容的提问来源于stack exchange,提问作者Stefan Ruben
相关产品推荐
相关产品推荐

