It's not easy to explain in a HN comment. Technical decisions like these never are. In this particular case, there is no single "Dart can do X and nothing else can". That's not true for any feature. It's the combination that mattered.
All in all, Dart was a really, really, really good choice. Not from a marketing perspective, obviously, but that's not everything.
Don't get me wrong. Flutter may well be a formidable piece of software. Dart either. I just don't get how flutter is marketed around the fact that dart was there first with no convincing use case and that people only then started looking for a raison d'etre.
When the chrome guys started the Sky experiment, now the flutter project, they started with javascript. I don't know why they dropped javascript, but they looked at several languages before trying Dart. Here is a floss weekly episode with one of the co-founders, talks about flutter's hotreload, an idea that came from the Dart team.
https://youtu.be/2C-2-tU6LLY?t=22m19s
If swift was opensource back then they may have gone with it and if they started today they may have gone with kotlin native.
Flutter's hotreload feature, something that they didn't know they wanted, was created after they decided to give Dart a go. While the Dart team had missed the boat on getting the Dart VM into chrome, they still had their internal customers using Dart2JS. The Dart team also had their own experiments in IOT and running on IOS.
Maybe Sky/Flutter guys saw Dart solving their problems that Javascript couldn't and they also saw that the Dart team has the expertise to help them in advancing their experiment to where it is today.
Honestly, the language itself is easy to learn if you come from a managed code background -- as ever, it's the domain knowledge that takes time to build (e.g. the libraries and framework of components and classes that any complex application takes advantage of).
Dart is easy to learn (espeically if you come from a JavaScript, Java, or C# background). It can be compiled in ways suitable for distribution in both Apple and Play Stores. And the Flutter team has direct access to the language team behind Dart to ensure that it works well for mobile development.
If you have seen C#, Kotlin, TypeScript or Java code and understand it, you will understand Dart and will be able to use the language soon enough.
It usually starts with a small, new thing to adopt a new tech (e.g. a not-yet-important mobile app, or a medium-sized single-page web app), and eventually it can take over other parts of the stack. How fast it happens is really unpredictable.
However, it really isn't a difficult language to pick up. I ported a Java app to Flutter and it was mostly just a case of copying the class files and fixing the syntax errors.