Last 1 week of my research was about Flutter. It was an interesting topic for me since its release time. I had too many questions in my head. Does it really worth to learn Flutter, when there is java/kotlin, swift, and react native? Let's start with basic question.
As Google says "Flutter is Google’s mobile app SDK for crafting high-quality native interfaces on iOS and Android in record time. Flutter works with existing code, is used by developers and organizations around the world, and is a free and open source.". Currently Flutter is in beta v0.5.1, but lately, they released Release Preview 1
There are plenty of learning resources to learn Flutter. Before learning you should know the syntax of Dart programming language. Dart is an object-oriented programming language which is similar to Java, C# and many more languages. But as Android Developer I would say, it is too similar to Java. There are some differences, the main similarity is that everything is Object.
It is really fast, has native performance and flexible UI.
I have had seen many apps which are written with Ionic and other tools. We can differ them by looking touching and by performance. But when I build an app with Flutter I couldn't differentiate it from a native app which is similar to React Native apps.
It is really worth to learn because...because building complex layouts in android(have experience) is the pain. Android has a lot of problems... You can see the roar of the developer in this article.
In Flutter everything is Widget. What else can make a developer happy? Flutter let's you make everything easily which broad widget controlling.
Challenge for newbie would be Dart itself. If you have not experienced above mentioned languages then it will be hard for you to learn Flutter(you should learn Dart before it). Don't get me wrong. You're great!
For experienced developers, challenges would be learning the architecture of Flutter. Mainly thinking and applying methods. You should think more before doing something. Because seeing design then trying to implement it would be hard create. That's why by looking to API or some examples would help you to learn it fast.
Main challenge here is when you first create flutter app it's android project not comes with configured for Kotlin. And for iOS project you should install Cocoapods. Android app would give compile error when building because of some installed dependencies written in Kotlin and for iOS pod install required. You would say doesn't Flutter's extension for VSCode or IntelliJ IDEA handle it? Well, sometimes it crashes since it's in early development process.
Thank you for reading till here. I really recommend learning Flutter since if you build one app means it is ready for android and ios. Feel free to discuss anything.