#flutter #listview #dart #rest
#flutter #listview #dart #rest
Вопрос:
[
{
"category": "Apple",
"name": "Macbook Air"
}, {
"category": "Apple",
"name": "Macbook Pro"
}, {
"category": "Microsoft",
"name": "Surface"
}, {
"category": "Apple",
"name": "iPad"
}, {
"category": "Microsoft",
"name": "Windows"
}, {
"category": "Apple",
"name": "Siri"
}, {
"category": "Microsoft",
"name": "Office"
}
]
Мне нужно добавить общую категорию в ListView из данных Rest API, приведенных в примере выше.
Apple и Microsoft — это категория, которая является общей для шести данных.
Это делается автоматически.
Не могли бы вы дать решение для этого?
Комментарии:
1. приведите пример ожидаемого списка, который вы ожидаете, тогда я мог бы вам помочь.
2. Добро пожаловать в stack overflow . Пожалуйста, попробуйте получить помощь с английским языком, начиная с
six data
(считая 7).
Ответ №1:
import 'dart:convert';
import 'dart:math';
const source = '''
{
"data": [
{ "category": "Apple", "name": "Macbook Air" },
{ "category": "Apple", "name": "Macbook Pro" },
{ "category": "Microsoft", "name": "Surface" },
{ "category": "Apple", "name": "iPad" },
{ "category": "Microsoft", "name": "Windows" },
{ "category": "Apple", "name": "Siri" },
{ "category": "Microsoft", "name": "Office" }
]
}
''';
main(List<String> args) {
final List data = jsonDecode(source)['data'];
var mode = Map<String, int>();
data.map<String>((e) => (e as Map)['category']).forEach((k) => mode[k] = (mode[k] ?? 0) 1);
var maxVal = mode.values.toList().reduce(max);
var category = List<String>();
mode.forEach((k, v) => v==maxVal ? category.add(k) : null);
print(category.toString());
}
Комментарии:
1. Другим способом мы можем использовать уникальную функцию dart для реализации вышеуказанной потребности. Но вышеупомянутый общий тип также полезен. Спасибо.
Ответ №2:
List getCategory(List data) {
List list = [];
for (var a in data)
if (!list.contains(a["category"]))
list.add(a["category"]);
return list;
}
Комментарии:
1.Другим способом мы можем использовать уникальную функцию dart для реализации вышеуказанной потребности. Но вышеупомянутый общий тип также полезен. Спасибо.