Итерировать по объектам - PullRequest
0 голосов
/ 07 мая 2020

У меня есть следующий рабочий код в проекте флаттера (на языке 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);
      }
    });
  }

Я рад изучить любой другой пост, но не смог найти ничего подобного. Может быть, я неправильно делаю сопоставление или это просто невозможно, но я надеюсь, что кто-нибудь сможет взглянуть.

Заранее большое спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...