如何访问和编辑Dart / Flutter列表内的地图的现有键的值?

时间:2019-03-25 20:32:17

标签: dart flutter

我正在创建一个地图列表,每个地图都有两个键["title"]["time"],所有键的值都以setState方法提交,且值提交为通过按钮输入字符串,并在列表内添加一个地图对象,即List _tasks = [],所以我想做的就是访问列表中最后一个地图的[“ time”]元素,并能够更改值。

这是一个小应用程序项目的一部分,可以帮助我进一步了解Flutter。应用程序的存储库位于https://github.com/jsdaniell/remindme

的Github上

列表已声明:

List _tasks = [];

将地图对象添加到列表的函数:

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


      },
    );

  }

重点是我想每秒减去变量_timeGlobal的值1,这是全局范围内的int值,并且是在Map ["time"]中设置为String的值,因此我写这段代码:

  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 个答案:

答案 0 :(得分:0)

要访问列表中的最后一个元素,可以使用: _tasks[_tasks.length - 1]; 因此,如果您希望列表的最后一个元素内的Map thats中的“时间”键使用: var lastTime = _tasks[_tasks.length - 1]["time"];