Safearea()没有正确 Package showModalBottomSheet。我需要在状态栏下显示模态。
class ModalBottomSheet {
static void renderModalBottomSheet(BuildContext context, Widget widget) {
showModalBottomSheet(
isScrollControlled: true,
shape: const RoundedRectangleBorder(
borderRadius: BorderRadius.vertical(
top: Radius.circular(border2),
),
),
context: context,
builder: (BuildContext context) {
return SafeArea(
child: Container(
padding: EdgeInsets.only(
bottom: MediaQuery.of(context).viewInsets.bottom,
),
child: widget,
),
);
},
);
}
}
我尝试了以下解决方案,但仍然无法正常工作
MediaQuery.of(context).padding.top
MediaQueryData.fromWindow(WidgetsBinding.instance.window).padding.top
更新:
我设法用这种方法解决了它。
把这个加到底页
backgroundColor: Colors.transparent,
和填充顶部
top: MediaQuery.of(context).padding.top,
完整代码:
class ModalBottomSheet {
static void renderModalBottomSheet(BuildContext context, Widget widget) {
showModalBottomSheet(
isScrollControlled: true,
backgroundColor: Colors.transparent,
context: context,
builder: (_) {
return SafeArea(
child: Padding(
padding: EdgeInsets.only(
top: MediaQuery.of(context).padding.top,
bottom: MediaQuery.of(context).viewInsets.bottom,
),
child: widget,
),
);
},
);
}
}
你的子部件可以用边界半径和颜色来代替。
开放式键盘
封闭式键盘
2条答案
按热度按时间unguejic1#
试试这个。如果不起作用,请参考page
rslzwgfq2#
你应该在
showModalBottomSheet
之前得到MediaQuery.of(context).viewPadding.top
,并将其传递到工作表内部,然后在工作表内部使用EdgeInsets.top
。