Я стараюсь изящно обрабатывать телефоны и устройства разных размеров, на которых будет работать мое приложение.
На iPhone SE экран не очень широкий, поэтому я хотел бы скрытьнекоторые метки (оставляя только значки), когда макет переполняется.
Вот код, используемый:
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
},
)
],
),
);
}
Как определить, что текущийСтрока «переполнена», так что я могу скрыть какой-нибудь ярлык?Я попытался использовать LayoutBuilder
для этого, но безуспешно: он всегда возвращает ограничения с maxWidth
, равным double.Infinity
.