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, но тут нужно отступ сверху и снизу, возникает тот же вопрос.
Ещё-раз вопросы:
- Если у нас один отступ что лучше использовать?
- Два отступа?
- Возможно есть что-то более удобное и производительное?
P.S. По логике контейнер тяжелее падинга, но как на практике? P.S.S. Раньше я использовал, паддинг, но я частенько вижу в примерах использование контейнера, что как минимум удобнее, но на сколько целесообразнее? Как-то гуглинг не дал результатов.
Ответы (1 шт):
Самое существенное отличие - это модификатор конструктора const у виджета Padding. Константные конструкторы дают выигрыш в производительности за счет оптимизации на стадии компиляции. У конструктора виджета Container слишком много параметров чтобы сделать его константным, ведь каждый передаваемый конструктору аргумент, в свою очередь, тоже должен быть константой.
Остальные различия если и влияют на скорость, то только за счет разницы в сложности конечной структуры. Количество отступов вообще не должно влиять, т.к. отсутствующие всё равно заполняются нулевыми.