Это более обобщенный ответ для будущих читателей.
Как добавить поля в виджет
В Flutter мы обычно говорим о добавлении Padding вокруг виджета, а не поля. Виджет «Контейнер» имеет параметр margin
, но даже он просто оборачивает его дочерним (и любым украшением, которое имеет дочерний элемент) внутренний виджет Padding.
Так что, если у вас есть что-то вроде этого
![enter image description here](https://i.stack.imgur.com/Ry6yQ.png)
и вы хотите добавить пространство вокруг виджета, как это
![enter image description here](https://i.stack.imgur.com/a7TWH.png)
тогда вы просто оберните виджет с помощью Padding. Это легко сделать, если навести курсор на имя виджета и нажать Alt + Enter (или Option + Return на Mac) в Android Studio. Затем выберите Добавить отступ из меню.
![enter image description here](https://i.stack.imgur.com/PPsWy.png)
, который дает вам что-то вроде этого
Padding(
padding: const EdgeInsets.all(8.0),
child: Text(
"text",
style: TextStyle(fontSize: 20.0),
),
);
Значение EdgeInsets
Когда вы устанавливаете отступы, вы не можете напрямую использовать целое или двойное число. Вы должны указать пространство (количество логических пикселей), используя EdgeInsets. Вы можете установить все стороны одновременно (как мы видели в примере выше), или вы можете установить их по отдельности, например так:
Widget myWidget() {
return Padding(
padding: const EdgeInsets.only(
left: 40,
top: 20,
right: 40,
bottom: 20,
),
child: Text("text"),
);
}
Поскольку в этом примере left
и right
одинаковы, а top
и bottom
одинаковы, мы можем упростить EdgeInsets до
padding: const EdgeInsets.symmetric(
horizontal: 40,
vertical: 20,
),
Использование контейнера для установки отступов и полей
Альтернативный метод - обернуть ваш виджет в Контейнер. Виджет «Контейнер» имеет свойство padding и margin. (Однако это будет необходимо только в том случае, если вы добавляете украшение, например, цвет фона или рамку.)
Widget myWidget() {
return Container(
margin: EdgeInsets.all(30),
padding: EdgeInsets.all(20),
decoration: BoxDecoration(
color: Colors.yellow,
border: Border.all(color: Colors.black),
),
child: Text(
"Flutter",
style: TextStyle(
fontSize: 50.0
),
),
);
}
![enter image description here](https://i.stack.imgur.com/FkCB2.png)