Карты Dart, как заменить определенное значение ключа в списке на основе его идентификатора ключа?

#list #flutter #dictionary #dart

#Список #flutter #словарь #dart

Вопрос:

 void main() {
  List<Map<String, dynamic>> products = [
    {'id': 24, 'time': '2019-11-24 00:00:00.000'},
    {'id': 36, 'time': '2019-11-23 00:00:00.000'},
    {'id': 48, 'time': '2019-11-24 00:00:00.000'},
  ];
 

В приведенном выше коде я хочу заменить запись ‘time’ ‘2019-11-24 00:00:00.000’ на ‘2019-10-26 00:00:00.000’ для ‘id’ 48.

Комментарии:

1. Если идентификатор уникален, у вас неправильная структура данных. Это должна быть одна карта с идентификатором в качестве ключа. Замена его была бы простым назначением. Перебор списка для поиска конкретного почти всегда пахнет кодом.

Ответ №1:

Вы можете попробовать что-то вроде этого:

    products.where((x) => x["id"] == 48).first["time"] = "2019-10-26 00:00:00.000";
 

Комментарии:

1. @Akif, ваши ответы на flutter действительно информативны.

2. Спасибо, @Ketan Ramteke 🙂

Ответ №2:

Вот еще один способ, как вы можете это сделать:

     void main() { 
      List<Map<String, dynamic>> products = [
        {'id': 24, 'time': '2019-11-24 00:00:00.000'},
        {'id': 36, 'time': '2019-11-23 00:00:00.000'},
        {'id': 48, 'time': '2019-11-24 00:00:00.000'},
      ];
      
       products = products.map((product){
        if(product["id"] == 48){
          return {...product, 'time': '2019-10-26 00:00:00.000'};
        }
         return product;
      }).toList();
      
      print(products.toString());
    }
 

Комментарии:

1. Спасибо, дорогой, «return {…product, ‘time’: ‘2019-10-26 00:00:00.000’};» сработало на меня 🙂

2. Рад, что это помогло, счастливого кодирования.