Есть ли способ обнаружить, что виджет переполняет макет? - PullRequest
0 голосов
/ 25 сентября 2018

Я стараюсь изящно обрабатывать телефоны и устройства разных размеров, на которых будет работать мое приложение.

На iPhone SE экран не очень широкий, поэтому я хотел бы скрытьнекоторые метки (оставляя только значки), когда макет переполняется.

Screenshot that shows the problem

Вот код, используемый:

  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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...