Flutter 有没有办法检测小部件使布局溢出?
我正在尝试优雅地处理各种尺寸的手机和设备,我的应用程序可以在这些手机和设备上运行 在iPhone SE上,屏幕不是很宽,所以我想在布局溢出时隐藏一些标签(只留下图标) 以下是使用的代码:Flutter 有没有办法检测小部件使布局溢出?,flutter,flutter-layout,Flutter,Flutter Layout,我正在尝试优雅地处理各种尺寸的手机和设备,我的应用程序可以在这些手机和设备上运行 在iPhone SE上,屏幕不是很宽,所以我想在布局溢出时隐藏一些标签(只留下图标) 以下是使用的代码: Widget likeDislikeLine() { return Padding( padding: EdgeInsets.only(top: 0.0, bottom: 0.0), child: ButtonBar( mainAxisSize: MainA
Widget likeDislikeLine() {
return Padding(
padding: EdgeInsets.only(top: 0.0, bottom: 0.0),
child: ButtonBar(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
OutlineButton.icon(
textColor: Colors.black,
icon: Icon(Icons.favorite_border, size: 18.0),
label: Text('J’aime'),
onPressed: () {
// Follow segment
},
),
OutlineButton.icon(
textColor: Colors.black,
icon: Icon(Icons.not_interested, size: 18.0),
label: LayoutBuilder(
builder: (BuildContext context, BoxConstraints constraints) {
String label = 'Je n’aime pas';
TextPainter tp = TextPainter(
text: TextSpan(text: label),
textDirection: TextDirection.ltr,
);
tp.layout(maxWidth: double.infinity);
print("${tp.width}, ${constraints.maxWidth}");
return tp.width < constraints.maxWidth
? Text(label)
: const SizedBox();
}),
onPressed: () {
// Ignore segment
},
)
],
),
);
}
Widget,比如edislikeline(){
返回填充(
填充:仅限边缘设置(顶部:0.0,底部:0.0),
孩子:巴顿巴(
mainAxisSize:mainAxisSize.min,
儿童:[
OutlineButton.icon(
textColor:Colors.black,
图标:图标(Icons.favorite_边框,大小:18.0),
标签:文本('J'aime'),
已按下:(){
//跟随段
},
),
OutlineButton.icon(
textColor:Colors.black,
图标:图标(不感兴趣的图标,尺寸:18.0),
标签:LayoutBuilder(
生成器:(BuildContext上下文,BoxConstraints){
字符串标签='jen'aime pas';
textpainer=textpainer(
text:TextSpan(text:label),
textDirection:textDirection.ltr,
);
tp.布局(最大宽度:双无限);
打印(${tp.width},${constraints.maxWidth});
返回tp.width
如何检测当前行是否“溢出”,以便隐藏一些标签?我尝试使用
LayoutBuilder
,但没有成功:它总是返回一个maxWidth
等于double.Infinity
的约束。你试过使用MediaQuery吗?我可以,但这意味着我必须硬编码一个断点,如果可能的话,我宁愿不这样做。一点也没有建设性,但很长一段时间以来,拥有iphone SE的苹果似乎也放弃了该设备的设计:许多应用程序都有一些溢出。。即使是官方的。也就是说,你已经检查过了吗?您可以使用MediaQuery获取设备的宽度,然后可以尝试获取总宽度的90%(0.9)倍。你可以这样计算其他东西。我会选择@CopsOnRoad的路线。至少这是我目前申请的方式