Flutter如何在底部padding中使用MediaQuery解决无效常量值报错问题
报错原因
const修饰符要求其修饰的对象值在编译期就必须完全确定,但MediaQuery.of(context).viewInsets.bottom是App运行时根据当前界面状态(比如软键盘是否弹出)动态获取的数值,无法在编译阶段提前计算,两者冲突就会触发无效常量值报错。
修复方案
直接去掉EdgeInsets前面的const关键字即可,修改后的代码如下:
padding: EdgeInsets.only( top: 10, left: 10, right: 10, bottom: MediaQuery.of(context).viewInsets.bottom + 10 ),
额外优化建议
如果是配合模态底部表使用,还可以在调用showModalBottomSheet时搭配两个参数进一步避免软键盘遮挡:
- 设置
isScrollControlled: true,允许底部表高度自适应软键盘 - 设置
useSafeArea: true,自动规避系统UI区域遮挡
内容的提问来源于stack exchange,提问作者Joel Stephen
相关产品推荐
相关产品推荐

