Я работаю над виджетом WidgetKit с двумя динамическими параметрами. Один из этих параметров ограничен вариантами, разрешенными первым. Допустим, первый - это капитан, а второй - это капитанский корабль. Допустимые конфигурации могут быть (без учета канона):
Captains: [Kirk, Picard, Crunch]
Captain: Kirk, Ship: [Enterprise, Galileo]
Captain: Picard, Ship: [Enterprise, Voyager, Cube]
Captain: Crunch, Ship: [Sugar, Berry, Chocula]
У меня работает логика. Например, если пользователь выбирает Picard, а затем нажимает кнопку «Отправить», доступны только варианты Enterprise, Voyager и Cube. Затем пользователь может выбрать один из этих кораблей (скажем, Cube), и все в порядке.
Однако опция «Корабль» не меняется и не сбрасывается при смене капитана. Допустим, после вышеуказанной настройки пользователь меняет капитана на Кирка. Корабль остается настроенным на Куб. Пользователь может выйти из конфигурации виджета, как будто все в порядке, но это неверная конфигурация.
Что бы я хотел сделать: когда пользователь меняет Капитана, Корабль меняется на первый из доступных вариантов Корабля для этого выбранного Капитана. Я также в порядке, если Корабль пропадает (требуется выбор), или пользовательский интерфейс выдает запрос Корабля (ограниченный доступными параметрами), или почти что-нибудь еще, что предотвращает недопустимую комбинацию.
Есть ли способ вызвать программное изменение второго параметра на основе выбора первого?
Я не хочу отображать сообщение о недопустимой комбинации в виджете времени выполнения. Я полагаю, что моя резервная копия состоит в том, чтобы выбрать корабль для пользователя, если он сделал неверный выбор, но это не идеально.
Если это имеет значение, первый параметр в реальном виджете (Captain в моем примере выше) действительно динамический (массив строк, предоставляемых через API). Второй параметр (приведенный выше «Корабль») представляет собой фиксированный набор из трех вариантов, где любой один, два или все три могут применяться к любому из выбора первого параметра. Предполагается, что пользователь может создать несколько виджетов с разными конфигурациями.