Проблема в том, какой тип списка вы используете.
List _toDoList = []; //this returns an index based list.
Map<String, dynamic> newTodo = Map(); //this list returns a list with a key and value pair
Решение состоит в том, чтобы либо изменить _toDoList
с List
на основе индекса на Map
, либо получить доступ к списку с помощью index
.
Map<String, dynamic> _toDoList = Map(); //change _toDoList to this
_toDoList.addAll(newToDo); //change to this
bool selected = _toDoList['verificar'] //this now works
или, с текущим кодом, как он есть, работает ниже.
bool selected _toDoList[0]['verificar'];
Подсказка: Распечатать тип запуска списка или переменная, чтобы увидеть, что это такое, тогда становится проще получить к ней доступ.
print('a: ${_toDoList.runtimeType} : $_toDoList');
print('b: ${_toDoList[0].runtimeType} : ${_toDoList[0]}');
print('c: ${_toDoList[0]['verificar']}');
Map<String, dynamic> newToDo = Map();
newToDo['verificar'] = true;
Map<String, dynamic> _toDoList2 = Map();
_toDoList2.addAll(newToDo);
print('d: ${_toDoList2.runtimeType} : ${_toDoList2['verificar']}');
и посмотрите вывод, который сообщает вам, какой это тип списка: 1022 * В итоге , ниже работает
Map<String, dynamic> _toDoList = Map(); //change this.
void initState() {
super.initState();
_readData().then((data) {
setState(() {
_toDoList = json.decode(data);
});
});
}
void _addToDo() {
setState(() {
Map<String, dynamic> newToDo = Map();
newToDo['verificar'] = true;
_toDoList.addAll(newToDo);
_saveData();
});
}
@override
Widget build(BuildContext context) {
bool selected = _toDoList[verificar];