Каков наилучший способ кодирования дерева решений? (условный рендеринг / видимость / другие)

#flutter #dart

#flutter #dart

Вопрос:

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

Когда пользователь ответит на первый вопрос, я хотел бы показать следующий вопрос ниже, который будет зависеть от пользовательского ввода. Для справки, у меня могут возникнуть некоторые вопросы, которые не являются простым ответом «да / нет», а разбиваются на три пути (т. Е. 6 ветвей / 8 ветвей / много ветвей)

Я не уверен, как это возможно в flutter, например, когда я помещаю оператор if в каркас следующим образом:.

if (input == "yes") {show widget1}

else if (input == "no") {render widget2}

«Тип элемента’Map<динамический, динамический>’ не может быть назначен типу списка’Widget'»

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

Заранее спасибо.

введите описание изображения здесь

Ответ №1:

если ваши возможные записи являются двоичными (только два варианта), вы можете использовать троичный вариант следующим образом:

 input=='yes'?show widget1:show widget2;
 

Просто чтобы вы знали: ternary выполняет следующий код? если предыдущее условие истинно, и иначе он выполняет код после :

В случае, если вам нужно отображать и принимать недвоичные решения, вы можете создать метод map или использовать if(condition) show widget (обратите внимание, что я не использовал фигурные скобки)