Разбираем condition_builder для условных выражений
В чем польза condition_builder? Разбираемся в утилите и применяем на практике.
53 открытий2К показов

Если вы разработчик Flutter, то знаете, как часто свойства виджетов — цвета, отступы, метки и стили — зависят от множества условий во время выполнения. Это часто приводит к вложенным тернарным операторам или запутанным цепочкам if / else, которые быстро превращаются в кошмар для поддержки.
Но существуeт более простой и понятный способ выражения многосторонней условной логики непосредственно в ваших виджетах. Это condition_builder, небольшая утилита для написания условных выражений в коде.
Проблемы с вложенными условиями
Представим, что необходимо изменить цвет фона виджета в зависимости от того, отключен он, выбран или находится в обычном состоянии. Ваш типичный подход может выглядеть следующим образом:
Это хорошо работает с двумя-тремя условиями, но по мере усложнения логики пользовательского интерфейса тернарные цепочки становится трудно читать, сложнее отлаживать и легче ломать.
Более того, по мере масштабирования вашего приложения условия могут начать появляться в разных местах, что затрудняет поддержание единообразия.
Решение с использованием condition_builder
condition_builder позволяет декларативно описывать условную логику и объединять несколько условий в цепочки в понятном и читаемом стиле:
Разбираем :
- вызовы .on(condition, value) вызывает каждый .on() и добавляет условие и соответствующее ему значение.
- Вызов .build() оценивает условия по порядку и возвращает значение для первого истинного условия.
- Дополнительное условие: укажите значение по умолчанию с помощью build(orElse: () => defaultValue), если ни одно из условий не соответствует действительности.
- Защита от ошибок: если вы не предусмотрели запасной вариант, ни одно из условий не выполняется, возникает ошибка — никаких скрытых ошибок!
Почему важен порядок
Порядок, в котором вы добавляете условия, имеет решающее значение: побеждает первое подходящее условие. Это дает вам четкий контроль и гарантирует предсказуемость и ясность вашей логики.
Преимущества с первого взгляда
- Более чистый код: больше никаких вложенных тернарных операторов.
- Улучшенная читаемость: ваши условия хорошо видны.
- Упрощенное обслуживание: легко изменять условия, не разбираясь в сложных выражениях.
- Декларативный стиль: ваш код пользовательского интерфейса читается как логичный поток.
- Безопасные значения по умолчанию: предотвращают бессимптомные сбои, выявляя пропущенные резервные варианты.
Заключение
condition_builder — это простой, но мощный инструмент, который воплощает в себе дух декларативного UI-кодирования. Он избавляет вас от путаницы вложенных условных операторов и позволяет сосредоточиться на создании элегантных, удобных в обслуживании виджетов Flutter. При использовании его ваш код интерфейса станет чище, понятнее и проще для восприятия.
53 открытий2К показов