DEV Community

Toshi Ossada for flutterbrasil

Posted on

Uma nova forma de utilizar os Switch Case no Dart 3

O Dart 3 nos trouxe muitas novidades incríveis, e já abordei de algumas por aqui, um recurso muito legal foi o que denominamos de Switch Expressions.

A forma tradicional do Dart é utilizarmos o switch statement que é uma forma imperativa e procedural que estamFos acostumados.

Note que, da forma antiga, com a Switch Statement não temos a capacidade de retornar diretamente o valor à variável, com a nova maneira utilizando Switch Expression traz uma importante mudança de introduzir aspectos da programação funcional para o Dart trazendo a linguagem mais flexibilidade e poder.

Um dos principais avanços das Switch Expressions no Dart 3 é a adoção de uma sintaxe similar às arrow arrow functions para mapear os cases diretamente ao valor de saída. Isso melhora a legibilidade do código e o torna menos propenso a erros.

Note que o default foi substituído apenas pelo _ (underline). Podemos melhorar ainda mais nosso código da seguinte forma:

Pattern Matching

Outro recurso bastante interessante é o Pattern Matching, com ele você pode desestruturar um objeto complexo ao mesmo tempo em que está validando uma condição e utilizar esses valores dentro da condição, no Dart 3 você pode utilizar o Pattern Matching dentro de suas condições switchs.

Veja no exemplo a seguir:

Guard Clauses

Como mostrei em artigos no Dart 3 temos os records, agora conseguimos usar os pattern matching em conjunto com os records, essa poderosa junção permite com que possamos desestruturar dados e executar uma condição nos dados desestruturados, utilizando a palavra reservada when para especificar a condição.

Sendo que os valores também podem ser providos de uma função.

Com toda certeza essas novas features deixam o Dart cada vez mais com uma cara de programação funcional, o Dart vem trazendo o que há de melhor da programação funcional e imperativa deixando o código mais legível, eficiente e testável

Image description

Entre em nosso discord para interagir com a comunidade: flutterbrasil.com.br

Top comments (0)