我有一个警报对话框菜单,其中包含一个包含一些按钮的网格视图,我需要我的警报对话框显示在页面底部而不是中间。我的问题是如何做到这一点。
Widget _buildAboutDialog(BuildContext context) {
return new AlertDialog(
backgroundColor: Colors.black,
content: Container(
width: MediaQuery.of(context).size.width * 0.9,
height: MediaQuery.of(context).size.height * 0.25,
child: Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Expanded(
child: new GridView.count(
crossAxisCount: 4,
children: new List<Widget>.generate(8, (index) {
return new GridTile(
child: new Card(
color: Colors.blue.shade200,
child: new Center(
child: new Text('$index'),
)
)
);
})),
) ],
),),
);
}
}
也许您不应该使用警报对话框,而是显示与您自己的小部件的对话框。
请注意,如果你需要一个对话框,我有点困惑。如果您不需要附加对话框,那么某些方法可能会有所帮助。
如果你只需要一个小部件:
Widget bottomGridTiles(BuildContext context) {
return Column(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[
GridView.count(
shrinkWrap: true, // Important
crossAxisCount: 4,
children: List<Widget>.generate(8, (index) {
return GridTile(
child: Card(
color: Colors.blue.shade200,
child: Center(
child: Text('$index'),
)));
}))
],
);
}
如果您需要与窗口小部件的对话框:
void _buildDialog(BuildContext context) {
showDialog(
context: context,
builder: (context) {
return bottomGridTiles(context);
});
}
打开对话框的小部件:
Widget openDialogButton(BuildContext context) {
return RaisedButton(
onPressed: () => _buildDialog,
child: Text("Open Dialog"),
);
}