Как выкладывать список в дартс - программирование
Подтвердить что ты не робот

Как выкладывать список в дартс

В Javascript я бы использовал оператор распространения:

enter image description here

Теперь у меня та же проблема с Флаттером:

 Widget build(BuildContext context) {
    return Column(
      children: <Widget>[
        MyHeader(),
        _buildListOfWidgetForBody(), // <- how to spread this <Widget>[] ????
        MyCustomFooter(),
      ],
    );
  }
4b9b3361

Ответ 1

Теперь вы можете заниматься распространением из Dart 2.3

var a = [0,1,2,3,4];
var b = [6,7,8,9];
var c = [...a,5,...b];

print(c);  // prints: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Ответ 2

Есть проблема, чтобы добавить это в будущую версию дротика https://github.com/dart-lang/language/issues/47

но сейчас вы можете использовать sync* и yield*

Iterable<Widget> _buildChildren sync* {
  yield MyHeader();
  yield* _buildListOfWidgetForBody();
  yield MyCustomFooter();
}

РЕДАКТИРОВАТЬ: Начиная с Dart 2.3 вы можете сделать:

Widget build(BuildContext context) {
    return Column(
      children: <Widget>[
        MyHeader(),
        ..._buildListOfWidgetForBody(),
        MyCustomFooter(),
      ],
    );
  }

Ответ 3

Вы не, в данный момент. Но вы можете создать List из него и вставлять/добавлять другие элементы на ходу.

 Widget build(BuildContext context) {
   final List<Widget> columnWidgets = List.from(_buildListOfWidgetForBody())
                       ..insert(0, MyHeader())
                       ..add(MyCustomFooter());

    return Column(
          children: columnWidgets
        );   
    }

Обновление - 20 апреля 2019 г.

Теперь вы можете использовать оператор распространения с момента выпуска Dart 2.3.

List<int> a = [0,1,2,3,4];
List<int> b = [6,7,8,9];
List<int> c = [...a,5,...c];