如何将showModalBottomSheet设置为全屏高度?

11 浏览
0 Comments

如何将showModalBottomSheet设置为全屏高度?

我使用showRoundedModalBottomSheet,如何将此模态框的高度调整到与应用栏相同?[图片链接](https://i.stack.imgur.com/ilEcY.png)

0
0 Comments

问题:如何将showModalBottomSheet设置为全屏高度?

原因:调用showModalBottomSheet时,如果将isScrollControlled参数设置为true,则对话框将允许占据整个高度。但默认情况下,showModalBottomSheet只会根据内容的高度来调整高度。

解决方法:可以使用Container和Wrap小部件来调整高度以适应内容。

示例代码:

final items = [

ListTile(

leading: Icon(Icons.photo_camera),

title: Text('Camera'),

onTap: () {},

),

ListTile(

leading: Icon(Icons.photo_library),

title: Text('Select'),

onTap: () {},

),

ListTile(

leading: Icon(Icons.delete),

title: Text('Delete'),

onTap: () {},

),

Divider(),

if (true)

ListTile(

title: Text('Cancel'),

onTap: () {},

),

];

showModalBottomSheet(

context: context,

builder: (BuildContext _) {

return Container(

child: Wrap(

children: items,

),

);

},

isScrollControlled: true,

);

以上就是解决问题"如何将showModalBottomSheet设置为全屏高度?"的原因和解决方法。

0
0 Comments

问题出现的原因是希望将showModalBottomSheet设置为全屏高度,而默认情况下无法直接设置高度。解决方法是使用FractionallySizedBox和isScrollControlled属性来控制高度。具体方法如下:

showModalBottomSheet(

context: context,

isScrollControlled: true,

builder: (context) {

return FractionallySizedBox(

heightFactor: 0.9,

child: Container(),

);

});

使用isScrollControlled属性将底部弹出框设置为可以滚动,并且通过FractionallySizedBox的heightFactor属性设置高度因子为0.9,实现了全屏高度。

然而,使用isScrollControlled属性解决了问题,但也带来了一个新的问题,即拖动关闭弹出框的功能消失了。

0
0 Comments

问题出现的原因:在使用`showModalBottomSheet`方法时,底部弹出的窗口高度不是全屏。

解决方法:可以将`showModalBottomSheet`方法中的`isScrollControlled`属性设置为`true`,即可使底部弹出的窗口高度为全屏。

另外,也可以采用实现`FullScreenDialog`的方式来实现全屏效果。可以参考Flutter Gallery应用中的`FullScreenDialog`示例代码。具体的打开对话框的代码如下:

Navigator.of(context).push(new MaterialPageRoute(

builder: (BuildContext context) {

return Dialog();

},

fullscreenDialog: true

));

如果想要使AppBar透明,可以使用`SafeArea`小部件来实现。如果遇到弹窗在状态栏上方的问题,可以尝试使用`SafeArea`小部件进行调整。

希望以上内容能对你有所帮助。

0