I'm glad that they finally added pattern matching to dart. I've been using it everywhere since it came through in dart 3.0. probably my favorite version of pattern matching is the elixir/Erlang module level pattern matching where are you can specify multiple functions with the same name in a module. So for example if I have a function that has optional arguments, I can create a function head that takes zero parameters and I create one for the optional parameters. The runtime will pattern match on the function head that is being invoked based on the amount of parameters that are being passed in. You can take this even further too, where you explicitly match on a value or on a type etc. It's unfortunate that we don't have this in dart but the dart version of pattern matching is still extremely powerful. My favorite use case in dart specifically is probably the first one you showed, where you can bind to a new variable if the sub case matches, it is basically rust's if let binding. It's kind of a shame that the enhanced enums are all constant, if they were more like union types, we could do a ton of different monads with pattern matching. For now you can do a similar thing with inheritance but it's not as powerful.
I am interested in taking your course, but there is no information when it was last updated. Can you tell me what version of Flutter and Riverpod you use in the course?
I actually stopped using vscode more than 2 years ago now. Just used VSCode for the videos because it would feel more comfortable for the viewer. Then I stopped caring :D No but it's NeoVim and it's the best and all others suck