Обновление массива в Statefull Widget?

В Flutter для обновления массива в Stateful Widget можно использовать метод setState().

В начале создаем список или массив внутри класса нашего Stateful Widget:

List<String> items = ["item 1", "item 2", "item 3"];

Затем обновляем состояние массива внутри setState(). Обратите внимание, что необходимо вызывать setState() только при изменении данных, иначе это может привести к перерисовке виджета излишне:

setState(() {
  items.add("new item");
});

Метод setState() обновляет состояние виджета и вызывает его перерисовку. После вызова setState(), Flutter будет обновлять только изменившиеся части виджета, что делает процесс более эффективным.

Итак, полный код будет выглядеть так:

import 'package:flutter/material.dart';

class MyWidget extends StatefulWidget {
  @override
  _MyWidgetState createState() => _MyWidgetState();
}

class _MyWidgetState extends State<MyWidget> {
  List<String> items = ["item 1", "item 2", "item 3"];

  void addItem() {
    setState(() {
      items.add("new item");
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Array Update Example"),
      ),
      body: ListView.builder(
        itemCount: items.length,
        itemBuilder: (context, index) {
          return ListTile(
            title: Text(items[index]),
          );
        },
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: addItem,
        child: Icon(Icons.add),
      ),
    );
  }
}

В данном примере мы создали класс MyWidget, который наследуется от StatefulWidget. Затем мы создали внутренний класс _MyWidgetState, который расширяет класс State и определяет переменную списка и метод addItem(), который добавляет новый элемент в список. В методе build мы строим пользовательский интерфейс, используя ListView.builder для отображения списка элементов, и FloatingActionButton для добавления нового элемента в список.