For me, the answer is simple. You should learn Flutter in 2021. In fact Flutter should be your number one choice, if you are planning on developing apps for mobile, or even web apps.
What is Dart?
Wait what? Dart? Not Flutter?

Well both are right. Dart is the programming language and Flutter is the frontend framework, on top of dart.
Dart was developed by Google to be a general purpose programming language, that can run on every machine natively. It was planned to be used for backend servers, battling the likes of Java or NodeJS and generally Dart was planning to replace JavaScript on the web.
Pretty big plans, huh? But did they succeed? Well, partially. They were developing a dart interpreter for Chromium, but they ended up scraping the idea. I tried it out in 2018 for a bit, it was working, but one had to install a new browser for just the sake of dart. They did not replace JavaScript, in fact, dart is now being compiled to JavaScript on the web.
So what about the other goals? Can it be used for the backend?

It cannot be used for that.
What can it be used for then? They created the Angular Framework with Dart. It was going to be another option for the Angular community. They could not only develop web apps with TypeScript of Angular, or AngularJS, but they added a new, a better option, AngularDart.

Finally, an established framework with the engine of Dart, and its strongly typed nature. It will be a killer new way of developing web apps. So did it happen?
No.

Okay, not as dramatic. AngularDart is a product, that you can use right now, although, it is not being developed with the speed it would deserve. It is usable, but with the kinds of Angular and React. When you are in a tough competition like this, it is expected to give it your best. But unfortunately, right now AngularDart is not giving its best.
But the product manager of Dart and Flutter has explained in a Reddit comment, what the current status of AngularDart is right now.
The real savior of Dart came out in May 2017. It was Flutter.

What can you do with Flutter?
As of November 2020, you can do almost anything with Flutter.
- Mobile apps
- Web applications
- Desktop Applications
It really is a cross platform framework, that was intended for Dart. So they finally did it. And they did it with exceeding expectations. The framework is really great for mobile development and the functionality for it is quite complete and always improving. There are updates every month on the beta channel, and every quarter there is an update on the stable channel.
It is possible to create web apps and desktop applications with Flutter, but as of the writting of this post, it is only possible on the beta channel. It is not 100% right now, but I have been developing for the web with Flutter for 8 month now and I have to say, I am pleased with what the Flutter team has done so far on the web version of Flutter.
There are key features, in which web is very different than mobile. Here is a list about the weakness of Flutter web.
- Scrolling
- Selectable texts
- Overall feel on desktop
Altough the Flutter team is always improving the framework not only for mobile, but for the web as well, there are still room for improvement. But luckily we have pub dev.
Pub dev is a site where open source packages has been created by the community, that helps improve and fade the weaknesses of Flutter. Even I have been creating packages for Flutter, because I believe that this framework really worths the work.
I have 2 packages so far that both are targeting scrolling and I have blogposts for both of them. One is improving the scroll performance when using a mouse wheel, which I pretty much did not like when I tried out Flutter web for the first time. The other is the scrollbar. Flutter did not have a general scrollbar on desktop, so I have created one.
In the future you could also develop some missing features for Flutter and it would be also beneficial for everyone. I am planning on creating a package for the second problem, which is the selectable text problem.
Is Flutter easy?
Yes. Flutter is easy, even for a first time language it is generally a great starting point if you are planning on picking up coding. First it is a no brainer is you are going to develop mobile applications, because the alternatives are not on the same level as Flutter. Of course you could create mobile apps with Java/Kotlin for android and Swift for IOS, but wouldn’t it be easier, if you could develop apps for both platforms with just one language? Flutter promises that.
It is cross platform and runs natively, because the Flutter code is being translated to Java, when you are building an android app, and for Swift if you are building an IOS app.
It is also an Object Oriented Programming language (OOP), which you must know if you are going to establish yourself as a programmer in general. It is strongly typed, which means every variable you create has a type and must have a type. Maybe it is just me, but I prefer the strongly typed languages to the weakly typed ones.
But if you want to create web apps and desktop apps with it, you could start with Flutter if you are really into it, but for the web, I would advise against it as your first language. Maybe a year later, when it finally comes out on the stable channel as well. Until then, there are more established web frameworks that you can look into.
The future of Flutter
Google is dreaming big with Flutter. They are developing an operating system with Dart that will replace Android, that is Fuchsia. That is good for us. It means that Flutter is being used heavily by one of the biggest internet companys. Currently there are no release date set for the project, but they are developing it for about 3 years.
The job offerings for Flutter is projected to be high, when Fuchsia releases. But even before it, it is getting higher each year. If you don’t want to be an employee, because you want to be a freelancer, or an entrepreneur, Flutter is a good choice.
Upwork is littered with Flutter projects, that you can apply right now. The number of jobs for Flutter is lower than Java Swift or the other mobile languages, but the early bird gets the worm. It is a good idea to start learning Flutter and be one of the people who has years of experience with it. It will be a valuable knowledge in the future.
Conclusion
We have concluded that Dart is a really great language for beginners and Flutter tops the Mobile scene with it’s logical structure. It is also really great if you are planning on freelancing.