#flutter #flutter-layout
#flutter #flutter-layout
Вопрос:
Недавно я начал изучать Flutter. Я наткнулся на виджеты макета. На этом этапе все виджеты делятся на два этапа.
В чем разница между виджетом с одним дочерним макетом и виджетом с несколькими дочерними макетами в flutter?
Комментарии:
1. Подумайте об этом интуитивно. Рассмотрим виджет столбца, он предназначен для размещения более одного дочернего элемента по вертикали. итак, Column — это виджет с несколькими дочерними элементами. с другой стороны, рассмотрим центральный виджет, который предназначен для центрирования своего дочернего элемента, поэтому это виджет с одним дочерним макетом.
Ответ №1:
Виджеты с одним дочерним макетом — это те, которые будут принимать только один виджет в качестве дочернего
Например: Container(), Center(), Expanded(), Align(), SizedBox () и т.д.
Виджеты с несколькими дочерними макетами — это те, которые будут принимать более одного виджета в качестве дочернего
Например: Column(), Row(), Stack(), GridView(), ListView (), Table () и т. Д.
Проще говоря, всякий раз, когда вы видите или используете виджет с дочерним свойством, этот виджет называется одноплодным макетом
Container(child: Text());
Center(child: Text());
Expanded(child: Text());
Align(child: Text());
SizedBox(child: Text());
И всякий раз, когда вы видите или используете виджет с дочерним свойством, этот виджет называется макетом с несколькими дочерними элементами*
Column(children: [Text(), Text(), Text(), Text()]);
Row(children: [Text(), Text(), Text(), Text()]);
Stack(children: [Text(), Text(), Text(), Text()]);
GridView(children: [GridTile(), GridTile(), GridTile(), GridTile()]);
ListView(children: [ListTile(), ListTile(), ListTile(), ListTile()]);
Table(children: [TableRow(), TableRow(), TableRow(), TableRow()]);
Вы можете использовать макеты с несколькими дочерними макетами внутри макета с одним дочерним макетом и наоборот.
// Single child layout with Multi-Child layout
Container(child: ListView(children: []));
// Multi-child layout with Single-Child layout
ListView(children: [
Container(child: Text()),
Container(child: Text()),
Container(child: Text()),
]
));
Виджет с одним дочерним макетом используется в качестве оболочки для других виджетов для изменения их положения, ширины, высоты, добавления пространства, полей и выравнивания содержимого и т. Д.
Виджет с несколькими дочерними макетами используется для создания списка виджетов в горизонтальном или вертикальном направлении, а также для наложения виджетов один на другой, упорядочивания данных, а также виджетов в структуре таблицы и т. Д.
Я надеюсь, что это поможет вам!