You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 07:30:00