В чем разница между виджетом с одним дочерним макетом и виджетом с несколькими дочерними макетами в flutter?

#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()),
   ]
)); 
 

Виджет с одним дочерним макетом используется в качестве оболочки для других виджетов для изменения их положения, ширины, высоты, добавления пространства, полей и выравнивания содержимого и т. Д.

Виджет с несколькими дочерними макетами используется для создания списка виджетов в горизонтальном или вертикальном направлении, а также для наложения виджетов один на другой, упорядочивания данных, а также виджетов в структуре таблицы и т. Д.

Я надеюсь, что это поможет вам!