Пробел не работает с таблицами - PullRequest
1 голос
/ 05 августа 2020

У меня есть виджет ползунка, значение которого отображается в одной строке в строке. Я использую FontFeature.tabularFigures() для отображения моего текста как моноширинного, но он не работает с пробелами.

Когда значение изменяется с двух символов на один и наоборот, например, от 10 до 9, макет прыгает, потому что 9 - это всего лишь один символ. Я попытался добавить пробел, чтобы учесть это, и сделать его «2» символами, но это не работает. Протестировано как на Android, так и на iOS.

Есть идеи, как мне это сделать?

Мой код:

parent.dart

Widget build(BuildContext context) =>
    ListTile(
      title: Text('Title'),
      subtitle: Column(
        children: List.generate(itemsArray.length, (index) =>
            Row(
              mainAxisAlignment: MainAxisAlignment.spaceBetween,
              children: [
                Text(itemsArray[index].name),
                Item(itemsArray[index]),
              ],
            ),
        ),
      ),
    );

item.dart

double value = 10.0;

Row(
  mainAxisAlignment: MainAxisAlignment.end,
  mainAxisSize: MainAxisSize.max,
  children: <Widget>[
    Container(
      width: 200.0,
      height: 40.0,
      child: Slider.adaptive(
        value: value,
        onChanged: (v) {
          setState(() {
            value = v.floorToDouble();
          });
        },
        min: 0,
        max: 99,
        divisions: 99,
      ),
    ),
    Text(
      value.toString().length < 2
          ? '\u00A0$value' //\u00A0 is a no-break space
          : value.toString(),
      style: const TextStyle(
        fontFeatures: [FontFeature.tabularFigures()],
      ),
    ),
  ],
)

Также FontFeature.tabularFigures(), похоже, вообще не работает для меня в dartpad.dartlang.org

Изменить: добавлен родительский код виджета с проблема.

1 Ответ

0 голосов
/ 05 августа 2020

Подумайте о том, чтобы обернуть свой виджет Text в виджет FittedBox и установить для свойства FittedBox значение BoxFit.fitWidth, чтобы виджет Text занимал всю доступную ему ширину.

Также вы можете обернуть виджет Text в SizedBox и установить ширину SizedBox, если вы хотите указать c width.

...