I think letting type inference do the job is great (I'm happy when I can type less).

Think about `final Map<A, B> map = new Map<A, B>();` if ever you change A or B, you have to type twice... tedious and useless. I would write this as `final map = Map<A, B>{};`.

Dart is not a a fully statically typed language and explaining type inference to your students would help them be more efficient :)