Firstly you can run dart in checked mode which will catch all type errors. Secondly static type checks will catch most errors. Even if there were no type checking at all the types are still hugely useful for documentation, navigation and tooling. Gradual typing can be more productive than pure static typing in that you can play fast and loose when you want to prototype something and then tighten up later when you have arrived at a definition of the solution.
Most of your arguments could also be applied to typescript (which doesn't even have the option of runtime tour checking)
Most of your arguments could also be applied to typescript (which doesn't even have the option of runtime tour checking)