Flutter中如何为禁用状态的TextField设置启用态文本颜色?
解决Flutter禁用TextField文本颜色与启用状态一致的问题
方法1:用readOnly替代enabled: false
如果只是需要禁止编辑但允许选中复制,readOnly: true能完美保留你设置的文本样式,不会自动变灰:
TextField( controller: _controller, readOnly: true, style: const TextStyle(fontSize: 20, color: Colors.black), // 设成和启用时一样的颜色 )
方法2:强制指定禁用状态的文本颜色
要是必须用enabled: false,有两种方式搞定:
- 直接在
style里明确写死颜色,Flutter会优先用这个配置:
TextField( controller: _controller, enabled: false, style: const TextStyle(fontSize: 20, color: Colors.black), // 明确指定颜色 )
- 或者在外层套
Theme,全局覆盖禁用状态的文本颜色:
Theme( data: Theme.of(context).copyWith( disabledColor: Colors.black, // 把禁用状态文本颜色改成你要的 ), child: TextField( controller: _controller, enabled: false, style: const TextStyle(fontSize: 20), ), )
方法3:同步边框样式(可选)
如果连输入框边框也想和启用状态保持一致,可以在InputDecoration里同步enabledBorder和disabledBorder:
TextField( controller: _controller, enabled: false, style: const TextStyle(fontSize: 20, color: Colors.black), decoration: InputDecoration( enabledBorder: OutlineInputBorder( borderSide: BorderSide(color: Colors.grey), ), disabledBorder: OutlineInputBorder( borderSide: BorderSide(color: Colors.grey), // 和启用状态边框样式一致 ), ), )
内容的提问来源于stack exchange,提问作者marcolav
相关产品推荐
相关产品推荐

