Состояние Redux dart для пользовательских настроек - PullRequest
0 голосов
/ 07 августа 2020

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

Я хочу иметь настройки для страницы панели мониторинга, страница панели инструментов имеет несколько разделов:

  1. Сегодня / Последний
  2. Неделя
  3. Месяц
  4. Исторический c

И у каждого из них должно быть разное состояние, скажем:

  1. isPinned,
  2. sortType,
  3. filterType,
  4. orderType,

состояние должно быть доступно следующим образом:

state.preferences.dashboard.section.week.isPinned //, .sortType, .filterType, .orderType, .etc...

Это можно сделать, используя почти 4 класса, хорошо, я могу это сделать,

redux-state-preferences-classes

but now, the requirement changed and the preferences of the sort (ASC/DESC) should belong to each filter selected..., to do that, I had to change again the shape of the state to fulfill the requirement, for example:

state.preferences.dashboard.section.week.filter.created.sort

Теперь мне нужно работать с 6 классов для управления всем состоянием настроек, и это сложно! К счастью, redux - хороший шаблон для управления состоянием, и все, кажется, лог c, но я боюсь, сколько предпочтений будет у приложения, изменить что-то на этом этапе - это немного обескураживает.

Представьте себе теперь, когда я использую пакет redux_persist и состояние должно быть сериализовано в формате json, теперь вам нужно умножить количество файлов x2, потому что я генерирую сопоставители json с помощью пакета json_serializer, и это меня начинает пугать, У меня почти 14 классов только для этих настроек.

Было бы неплохо иметь что-то вроде карт, используемых в JavaScript, потому что я могу легко формировать состояние таким образом:

final preferences = <String, dynamic>{
    'dashboard': {
      'section': {
        'today': {
          'filter': {
            'created': {
              'sort': 'asc',
            },
            'canceled': {
              'sort': 'desc',
            },
            'delivered': {
              'sort': 'asc',
            },
          },
        },
        'week': {
          'filter': {
            'created': {
              'sort': 'asc',
            },
            'canceled': {
              'sort': 'desc',
            },
            'delivered': {
              'sort': 'asc',
            },
          },
        },
        'month': {
          'filter': {
            'created': {
              'sort': 'asc',
            },
            'canceled': {
              'sort': 'desc',
            },
            'delivered': {
              'sort': 'asc',
            },
          },
        },
        'historic': {
          'filter': {
            'created': {
              'sort': 'asc',
            },
            'canceled': {
              'sort': 'desc',
            },
            'delivered': {
              'sort': 'asc',
            },
          },
        },
      }
    }
  }

Но если я использую карты для управления состоянием из redux, я теряю преимущества набора, и это дилемма для меня, потому что мне нравятся типы, в JavaScript с помощью TypeScript я могу получить тот же результат, но с меньшими затратами усилий к природе этого языка.

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

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