首页 > 解决方案 > SafeArea 在模态底页中被忽略

问题描述

刚刚注意到顶部的 SafeArea 在showModalBottomSheet设置为时被忽略isScrollControlled: true。(我希望我的模式适合屏幕)有人找到解决方法吗?

showModalBottomSheet(
  context: context,
  isScrollControlled: true,
  builder: (context) => MyModal(),
)

我的测试模态

class MyModal extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return SafeArea(
      child: Column(
        children: <Widget>[
          Text('Modal'),
          Expanded(
              child: Container(
            color: Colors.red,
          ))
        ],
      ),
    );
  }
}

输出

在此处输入图像描述

我通过设置模态内容的高度来临时修复它

SafeArea(
      child: Container(
        height: MediaQuery.of(context).size.height - 80,
        child: Column(
          children: ...

输出

在此处输入图像描述

标签: flutter

解决方案


如果您使用GetX 试试看

    final padding = MediaQuery.of(Get.context!).viewPadding;

否则,您可以将父上下文作为参数传递

    final padding = MediaQuery.of(parentContext).viewPadding;

推荐阅读