Маленький контейнер только с одним символом без центрирования - Flutter - PullRequest
0 голосов
/ 05 марта 2020

Маленький контейнер только с одним символом без центрирования, с заполнением или без него, установленным на 0.

Если я уменьшу размер шрифта, будет отцентрировано, но с размером текста по умолчанию нет

Container(
  decoration: BoxDecoration(
    color: Colors.green,
    shape: BoxShape.circle,
  ),
  width: 20.0,
  height: 20.0,
  alignment: Alignment.center,
  padding: EdgeInsets.all(0.0),
  child: Text(
    '+',
  ),
)

Result of green container

Обновление: значок вместо буквы ведет себя точно так же. enter image description here

Если изменить размер с 20 на 40: enter image description here

Код

Container(
            width: 40,
            height: 40,
            alignment: Alignment.center,
            decoration: BoxDecoration(
              shape: BoxShape.circle,
              color: Colors.grey,
            ),
            child: RotatedBox(
              quarterTurns: 3,
              child: Icon(
                Icons.expand_less,
                color: Colors.white,
              ),
            ),
          ),

Обновление 2: со встроенным работает с иконкой: enter image description here

Container(
            width: 20,
            height: 20,
            alignment: Alignment.center,
            decoration: BoxDecoration(
              shape: BoxShape.circle,
              color: Theme.of(context).textTheme.caption.color,
            ),
            child: FittedBox(
              child: RotatedBox(
                quarterTurns: 3,
                child: Icon(
                  Icons.expand_less,
                  color: Theme.of(context).primaryColor,
                ),
              ),
            ),
          ),

1 Ответ

1 голос
/ 05 марта 2020

Я не могу воспроизвести это. Но я предполагаю, что ваш размер шрифта по умолчанию слишком велик для контейнера. Вы можете попытаться обернуть текст в FittedBox , чтобы он адаптировался к контейнеру:

return Container(
      decoration: BoxDecoration(
        color: Colors.green,
        shape: BoxShape.circle,
      ),
      width: 20.0,
      height: 20.0,
      alignment: Alignment.center,
      padding: EdgeInsets.all(0.0),
      child: FittedBox(
        child:Text('+')
     ),
);
...