Yes, Dart is amazingly broken for a modern language. This compiles:
List<Animal> animals = [Dog()];
List<Cat> cats = animals;
What is a static type system worth if it doesn't catch type errors at compile time?