#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); }