Flutter中给TextFormField添加Scrollbar后向下滚动报错如何解决?
问题原因
Scrollbar组件需要绑定可滚动组件的ScrollController才能正常工作,直接将TextFormField作为Scrollbar的子组件时,TextFormField内部维护的滚动控制器没有对外暴露给外层Scrollbar,滚动时就会触发找不到对应控制器的异常。
解决方案
给Scrollbar和TextFormField绑定同一个ScrollController实例即可,完整修改步骤如下:
- 首先在State类中声明控制器,并且在组件销毁时主动释放控制器避免内存泄漏
// State类内声明 final ScrollController _textScrollController = ScrollController(); @override void dispose() { _textScrollController.dispose(); super.dispose(); }
- 修改组件部分的代码,给两个组件绑定同一个控制器
Scrollbar( controller: _textScrollController, // 若需要默认常驻显示滚动条,可添加以下属性(Flutter 2.3及以上版本支持) // thumbVisibility: true, child: TextFormField( scrollController: _textScrollController, maxLines: 4, minLines: 1, decoration: InputDecoration( contentPadding: EdgeInsets.all(0.0), border: InputBorder.none, isDense: true ), ), )
内容的提问来源于stack exchange,提问作者Long Khoa
相关产品推荐
相关产品推荐

