Как получить доступ и отредактировать значение существующего ключа карты, которая находится внутри списка в Dart / Flutter?

#dart #flutter

#dart #flutter

Вопрос:

Я создаю список карт, у каждой карты есть два ключа ["title"] и ["time"] , все значения ключей передаются в setState методе, причем значения передаются в виде строк с помощью кнопки, и объект карты добавляется внутри списка, вот List _tasks = [] что я хотел бы сделать, так это получить доступ к элементу [«time»] последней карты, добавленной в список, и иметь возможность изменять значение.

Это часть небольшого проекта приложения, чтобы помочь мне узнать больше о Flutter. Репозиторий приложения находится на Github на https://github.com/jsdaniell/remindme

Список объявлен:

 List _tasks = [];
  

Функция, которая добавляет объект карты в список:

 void _addTask() {
    setState(
      () {
        Map<String, dynamic> newTask = Map();
        newTask["title"] = _taskController.text;
        newTask["time"] = _timeGlobal.toString();
        _taskController.text = "";
        _tasks.add(newTask);


      },
    );

  }
  

Дело в том, что я хочу каждую секунду вычитать значение 1 из переменной _timeGlobal, что является int в глобальной области видимости и является значением, которое задается в виде строки в ["time"] на карте, поэтому я пишу этот код:

   String countdownTime(Map newTask) {

    Timer timer = new Timer.periodic(new Duration(seconds: 1), (timer) {

        // Here I want to access the value of ["time"] element, where's in the last position of list and update the value.

        _saveData();

        return Home();

    });

    // Stop the periodic timer using another timer which runs only once after specified duration

    new Timer(new Duration(minutes: _timeGlobal), () {
      timer.cancel();
    });
  }
  

Я надеюсь, что у вас есть какой-то способ получить доступ к последней карте в списке карт и конкретному ключу на этой карте.

Ответ №1:

для доступа к последнему элементу в списке вы можете использовать: _tasks[_tasks.length - 1]; поэтому, если вам нужен ключ «time» с карты, которая находится внутри последнего элемента вашего списка, используйте : var lastTime = _tasks[_tasks.length - 1]["time"];