Once again I waxed verbose on Quora, answering:
I’m a 2-year experienced software engineer and I worked with Angular. Now I need to change to cross-platform development. I need Dart and Flutter. How should I switch?
and wanted to preserve my answer here on my own site, so:
First a nitpick: I wouldn’t use the term “switch”. You can switch what you’re doing in your day-job, but think of it more as adding Dart and Flutter to your toolbox. You would still be able to do Angular.
Now on to how to learn Dart and Flutter. I don’t know either of these so I can’t offer very well tailored advice, but in general, my process for learning a new technology starts with Googling:
“what I’m trying to learn” (intro OR introduction OR tutorial OR 101 OR “for dummies” OR “for idiots” OR learn)
(and maybe other such phrases). That will find introductory tutorials and such, for whatever it is that I’m trying to learn. I pick one that seems to be popular, taking things to the appropriate depth, and not dependent on prior knowledge I don’t have, but ideally leveraging what prior knowledge I do have. For instance, if I were learning Haskell and came across a tutorial with a title like “Haskell for Ruby Programmers”, great! (And similarly for the other languages I already know; the better I know the language, the better such a titled tutorial would probably be for me.) “Haskell for Rust Programmers”, no. “Learn Programming with Haskell” could possibly do, but would waste a lot of my time on the basics of programming. Something generic like “Intro to Haskell” sounds like it might be assuming the reader is already a programmer, and merit a closer look.
After finding and reading a decent tutorial, preferably with lots of exercises to confirm my understanding, I’ll try some other ways to practice. The two main ways to do that, are to contribute to open source projects, and to do katas (small exercises). Finding an appropriate open source project that needs something I can do, can be difficult. Katas are much easier to find. There are lists out there (sorry my favorite is no longer around), and sites such as Exercism, where you can get a steady stream of them, tailored to your language, tailored to form a good learning path to get you familiar with the fundamentals first and then build on them, and some feedback, through both asking explicitly for mentoring and just making your solution public and letting whoever wants to comment do so. You can also blog your solutions, as another way to let the public comment.
Once you feel confident enough to write a useful program all on your own, scratch an itch. Do you wish some particular program existed? Write it. To paraphrase Gandhi, be the developer you wish to see in the world. Better yet, make it open source, so you can get feedback, and credibility as having at least that form of experience in your new language.