У меня есть следующий рабочий код в проекте флаттера (на языке DART). Он работает, но, похоже, я могу его оптимизировать. Поэтому я хотел добавить циклы и объект для итерации. Может ли кто-нибудь объяснить мне, возможно ли это, и если да, то, если это хорошая практика?
String postCategory = 'false';
Future<List<Post>> itemsFeatured;
Future<List<Post>> itemsPopular;
Future<List<Post>> itemsSoon;
Future<List<Post>> itemsPast;
@override
void initState() {
super.initState();
itemsFeatured = fetchPost('false', 'Featured', postCategory);
itemsPopular = fetchPost('false', 'Popular', postCategory);
itemsSoon = fetchPost('false', 'Soon', postCategory);
itemsPast = fetchPost('true', 'false', postCategory);
}
Future<void> refresh() async {
setState(() {
itemsFeatured = fetchPost('false', 'Featured', postCategory);
itemsPopular = fetchPost('false', 'Popular', postCategory);
itemsSoon = fetchPost('false', 'Soon', postCategory);
itemsPast = fetchPost('true', 'false', postCategory);
});
}
Можно ли упростить этот повторяющийся код, сделав что-то вроде того, что я пытался описать ниже? Если да, может ли кто-нибудь исправить / объяснить мне синтаксис, которому я должен следовать?
final groups = {
"featured": {
"title": "Featured",
"past": "false",
},
"popular": {
"title": "Popular",
"past": "false",
},
"soon": {
"title": "Coming Soon",
"past": "false",
},
"past": {
"title": "Past",
"past": "true",
},
};
String postCategory = 'false';
for (var group in groups.values){
Future<List<Post>> ??? (What to put here)?
}
@override
void initState() {
super.initState();
for (var group in groups.values){
??? (What to put here)? = fetchPost(group['past'], group['title'], postCategory);
}
}
Future<void> refresh() async {
setState(() {
for (var group in groups.values){
??? (What to put here)? = fetchPost(group['past'], group['title'], postCategory);
}
});
}
Я рад изучить любой другой пост, но не смог найти ничего подобного. Может быть, я неправильно делаю сопоставление или это просто невозможно, но я надеюсь, что кто-нибудь сможет взглянуть.
Заранее большое спасибо.