Container vs Padding

Меня уже некоторое время тревожит один вопрос, что лучше использовать Container или Padding со стороны производительности.

У меня есть контейнер:

Container(
  padding: EdgeInsets.fromLTRB(20, 32, 20, 35),
  decoration: BoxDecoration(
    color: Colors.white,
    borderRadius: BorderRadius.circular(20),
  ),
  child: Column(
    crossAxisAlignment: CrossAxisAlignment.stretch,
    children: [
      Row(
        children: [
          Expanded(
            child: FlatButton(...),
          ),
          Container(width: 15),
          Expanded(
            child: FlatButton(...),
            ),
          ),
        ],
      ),
      Divider(height: 1),
      Text(text),
    ],
  ),
);

Как мы видим, у нас есть контейнер со своим падингом, соответственно для кнопок у нас есть все отступы, но нужен ещё отступ между кнопками. Можно использовать Padding right, а можно всунуть контейнер, как есть в примере. Ворой вариант с Divider, но тут нужно отступ сверху и снизу, возникает тот же вопрос.

Ещё-раз вопросы:

  1. Если у нас один отступ что лучше использовать?
  2. Два отступа?
  3. Возможно есть что-то более удобное и производительное?

P.S. По логике контейнер тяжелее падинга, но как на практике? P.S.S. Раньше я использовал, паддинг, но я частенько вижу в примерах использование контейнера, что как минимум удобнее, но на сколько целесообразнее? Как-то гуглинг не дал результатов.


Ответы (1 шт):

Автор решения: Spatz

Самое существенное отличие - это модификатор конструктора const у виджета Padding. Константные конструкторы дают выигрыш в производительности за счет оптимизации на стадии компиляции. У конструктора виджета Container слишком много параметров чтобы сделать его константным, ведь каждый передаваемый конструктору аргумент, в свою очередь, тоже должен быть константой.

Остальные различия если и влияют на скорость, то только за счет разницы в сложности конечной структуры. Количество отступов вообще не должно влиять, т.к. отсутствующие всё равно заполняются нулевыми.

→ Ссылка