В Dart 3.0 появились Switch expressions, что позволяет сразу получить значение на основе выражения. Это может выглядеть так:
var x = switch (y) { ... }; print(switch (x) { ... }); return switch (x) { ... };
Сейчас я расскажу, какие преимущества даст новый подход. ?

Теперь, когда мы получили погодные данные (Pop.medium и temp = 17.0 ) из приложения Weather Today, наш код будет выглядеть следующим образом:
/// Probability of precipitation enum Pop { low, medium, high } enum Things { umbrella, // зонт raincoat, // дождевик windbreaker, // ветровка glasses, // очки ; List<Things> takeExtra(double temp /*Celsius*/, Pop pop) { return ...; } }
Для удобства я определил метод takeExtra внутри enum, чтобы иметь доступ к значениям без использования Things. всякий раз. Подумайте, как бы вы реализовали данный метод.
У меня получился вот такой код:
List<Things> takeExtra(double temp /*Celsius*/, Pop pop) => switch (pop) { Pop.low when temp >= 10 => [glasses, windbreaker], Pop.low when temp < 10 => [windbreaker], Pop.medium when temp > 24 => [windbreaker], Pop.medium => [umbrella, windbreaker], Pop.high => [umbrella, raincoat], _ => [glasses], };
Заметьте, это выглядит достаточно ёмко и выразительно. Страшно представить, какая цепочка switch case и if'ов могла выстроиться в этом методе. И всё же, используйте с умом данное новшество – лучше написать понятней, чем вычурней.
А в завтрашний поход я возьму зонт и ветровку. ?
