Com a correspondência de padrões, é fácil criar uma condição como esta:
if (json case {"data": final Map data, "changed": final List changed}
when changed.isNotEmpty) {
... perform some work with 'data' and 'changed'.
}
No entanto, isso leva ao código ilegível (em termos de aninhamento), se você tiver vários padrões para aplicar.
O que eu gostaria de fazer é ter cláusulas de proteção de padrões, de modo que eu possa escrever algo assim:
if (NOT json case {"data": final Map data, "changed": final List changed}
when changed.isNotEmpty) {
return;
}
... perform some work with 'data' and 'changed'.
https://dart.dev/language/pattern-types lista os tipos de padrões suportados pelo Dart e não há nenhum padrão lógico NÃO mencionado.
No entanto, você ainda pode evitar uma pirâmide da destruição fazendo: