ошибка при передаче аргументов и дублировании списка переданных элементов два раза в flutter

#list #flutter #navigator

#Список #flutter #навигатор

Вопрос:

Я использую arguments метод in Navigator для передачи списка

 Navigator.pushNamed(context, '/cam', arguments: {'label' : list});
 

list строка элементов, разделенных запятой, например: item1, item2

и при получении карты данных с первого экрана на втором экране я сохраняю это в списке с помощью

 data = ModalRoute.of(context).settings.arguments;
print(data);
rekognition.add(data['label']);
print(rekognition);
 

при сборке виджета и приведенных выше операторах печати печатаются [null, item1, item2 ] и [null, item1, item2, null, item1, item2] соответственно.

проблема в том, что я не понимаю, почему null здесь появляется всплывающее окно, и список добавляет все элементы во второй раз

также

 for (x=0; x<ing.length; x  ) {
    list = '$list , ${ing[x]}';
}
 

ing это снова список, и он равен List<dynamic>();

все, что я хотел сделать, это отправить список элементов, который добавляется на первом экране, и или пустой список на второй экран, и добавить все полученные данные в другую переменную на втором экране, а также выполнить обнаружение объекта и добавить метку в список элементов, который был передан с первого экрана и снова вернитесь к первому экрану с данными всех элементов списка, включая данные, которые были переданы и добавлены

Ответ №1:

Я смог устранить null ошибку, отправив список ing в виде одной переменной вместо карты с помощью

arguments: ing.toList() и причина, по которой список на втором экране добавляет элементы во второй раз из-за setState() функции, которая при вызове перестроит все дерево виджетов, следовательно, моя функция добавления элементов в список вызывается снова, это было решено с помощью условия if

 if (mylist.length == 0 ) { mylist.add(data); }