flutter - 水平模式下的 Flutter ButtonBar 似乎不尊重 MainAxisSize
问题描述
我想使用颤振的 ButtonBar,因为当设备的宽度不够时自动拥有一列的好功能。但是,我也想使用 MainAxisSize.min,但我无法让它在水平模式下使用 MainAxisSize.min(wrt 宽度)。请参见下面的示例。
Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Container(
decoration: BoxDecoration(border: Border.all()),
child: ButtonBar(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
FlatButton(
child: Text('short'),
color: Colors.blueAccent,
onPressed: () => {},
),
FlatButton(
child: Text('short'),
color: Colors.blueAccent,
onPressed: () => {},
),
],
),
),
Container(
decoration: BoxDecoration(border: Border.all()),
child: ButtonBar(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
FlatButton(
child: Text('loooooooooooooooooong'),
color: Colors.blueAccent,
onPressed: () => {},
),
FlatButton(
child: Text('loooooooooooooooooong'),
color: Colors.blueAccent,
onPressed: () => {},
),
],
),
),
],
),
解决方案
一个可能的解决方案是使用Wrap
类而不是ButtonBar
. 您必须使用 Center 小部件包装 Container 为布局添加一些填充,然后您就可以走了:
Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Container(
decoration: BoxDecoration(border: Border.all()),
child: ButtonBar(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
FlatButton(
child: Text('short'),
color: Colors.blueAccent,
onPressed: () => {},
),
FlatButton(
child: Text('short'),
color: Colors.blueAccent,
onPressed: () => {},
),
],
),
),
Center(
child: Container(
decoration: BoxDecoration(border: Border.all()),
padding: EdgeInsets.all(10),
child: Wrap(
//alignment: MainAxisAlignment.center,
//mainAxisSize: MainAxisSize.max,
children: <Widget>[
FlatButton(
child: Text('looooooooooooooooooooooooong'),
color: Colors.blueAccent,
onPressed: () => {},
),
FlatButton(
child: Text('looooooooooooooooooooooooong'),
color: Colors.blueAccent,
onPressed: () => {},
),
],
),
),
),
],
),
推荐阅读
- java - 我想滚动滚动视图而不是 webview
- python-3.x - 在字典python 3中查找和替换列表值
- windows-10 - Windows10 是否会缩短在浏览器中制作的 webm 视频?
- java - 绘制的形状不显示在 JFrame 上
- aws-lambda - 部署到 AWS 时未调用无服务器 Lambda 授权程序
- c - C 编程:如何从文件中删除单个记录
- regex - 正则表达式出了什么问题?
- html - 使用单独的 svg 作为背景的最佳方法是什么?
- android - android studio org.json.JSON.typeMismatch
- node.js - 如何使用 NodeJs(和 ExpressJs?)REST 服务私有图像