Я создал один пример для вас, где есть список категорий и добавил опубликованное в поле для сортировки
Вот json:
{
"Categories": [
{
"id": 1,
"name": "Restruants",
"publishedAt": "2019-05-07T00:36:38Z",
},
{
"id": 2,
"name": "Car Rental",
"publishedAt": "2019-06-07T00:36:38Z",
},
{
"id": 3,
"name": "Furniture",
"publishedAt": "2019-12-21T00:36:38Z",
},
{
"id": 4,
"name": "cars",
"publishedAt": "2019-08-10T00:36:38Z",
},
{
"id": 5,
"name": "Maintenance",
"publishedAt": "2019-03-15T00:36:38Z",
},
{
"id": 6,
"name": "Education",
"publishedAt": "2019-09-17T00:36:38Z",
},
{
"id": 7,
"name": "Finess",
"publishedAt": "2019-01-28T00:36:38Z",
},
{
"id": 8,
"name": "Electronics",
"publishedAt": "2019-09-19T00:36:38Z",
},
{
"id": 9,
"name": "Medical",
"publishedAt": "2019-12-25T00:36:38Z",
},
{
"id": 10,
"name": "Entirtainment",
"publishedAt": "2019-06-14T00:36:38Z",
}
]
}
Воткласс модели, где вы можете найти метод сортировки, когда мы получаем данные из json.
Вы можете увидеть метод, начинающийся с комментария ниже "// СОРТИРОВАТЬ Массив С ключом опубликованного"
class ItemModel {
List<Category> categories;
ItemModel({
this.categories,
});
factory ItemModel.fromJson(Map<String, dynamic> json){
var accJson = json["Categories"] as List;
List<Category> accList = accJson.map((i) => Category.fromJson(i)).toList();
// TO SORT ARRAY WITH publishedAt
accList.sort((a, b) {
return a.publishedAt.compareTo(b.publishedAt);
});
return ItemModel(
categories: accList
);
}
Map<String, dynamic> toJson() => {
"Categories": new List<dynamic>.from(categories.map((x) => x.toJson())),
};
}
class Category {
int id;
String name;
String publishedAt;
IconPath iconPath;
Category({
this.id,
this.name,
this.publishedAt,
this.iconPath,
});
factory Category.fromJson(Map<String, dynamic> json) => new Category(
id: json["id"],
name: json["name"],
publishedAt: json["publishedAt"],
iconPath: iconPathValues.map[json["iconPath"]],
);
Map<String, dynamic> toJson() => {
"id": id,
"name": name,
"publishedAt": publishedAt,
"iconPath": iconPathValues.reverse[iconPath],
};
}
Нижекласс Future для получения списка из статического файла json из ресурсов, и он даст вам отсортированный результат, потому что мы уже отсортировали его в методе «fromJson»:
Future<ItemModel> fetchMovieList(BuildContext context) async {
final jsonCategory = await DefaultAssetBundle
.of(context)
.loadString('assets/CategoryList.json');
Map<String, dynamic> values = Map<String, dynamic>.from(jsonDecode(jsonCategory));
final mapJsonCategory = Map<String, dynamic>.from(values);
print(mapJsonCategory);
return ItemModel.fromJson(mapJsonCategory);
}
Надеюсь, это поможет:)