Ask HN: Flutter or Android API better for getting into mobile development?

4 points by gkya ↗ HN
I've decided to learn mobile app development, both for making a couple apps that I myself need, and for picking up a skill that can be useful in the coming years if my life plans change. So I'm developing an Android app now, using Flutter, which is not really as smooth as I'd like it to be because I am learning Dart as I go and the API is not very pleasant (e.g. you need 3 constructors to put some text in a text field). I'd much rather try using Clojure or Kawa. But watching Fuchsia happen, and the fact that Flutter seems to be the preferred UI toolkit there, I feel like Flutter is a better investment if I ever decide to go professional in the coming years. Not only, but it's portable to iOS, which is yet another benefit.

So, what do you think is a better choice in this situation for me, and for anybody else like me starting out with mobile development but does not need to do that professionally right away?

Thanks a lot in advance!

3 comments

[ 3.8 ms ] story [ 18.1 ms ] thread
I recommend you to go with Android(kotlin) development and Swift for iOS.

Here are the pros:

- As a profesional app developer you want to know the native patterns better, so you can take out the most from the platform.

- You won't rely on third party components as much.

- You'll have immediate access to the latests apis as they are released in the native framework.

- Faster testing, better debugging experience.

- Easier integration with CI tools or automated test tools.

- Shorter build times.

- Writing in two languages has also it's advantages, you can learn things from Swift 4 that you might love.

Cons:

- You'll have to write two applications.

There are things that will be fundamentally different in both platforms and you won't be able to build once and release in both platforms anyway. (Android instant App is the first that comes to my mind)

So in my opinion you should start with native development first, later you can change your mind, and go to Flutter but you'll be able to leverage your experience to build your own plugins, and create really advance stuff.

Otherwise you'll be always limited. IMHO.

While I concur with everything you mentioned I find the debugging expierience with flutter ahead of the native approaches. Especially state keeping hot reloads are very usefull.

Personally I choose flutter over kotlin/swift simply because it did "click" with me, while the native apis only confused. But I know that my (simple) app is 80% design, flows, user research, ideas and marketing and only 20% is code.

If it ever happens that I reach the limits of flutter, I need to redo 20% of my work. But since I am an absolute beginner at app development, and consistently learn new approaches, I need to rewrite my old code one way or another. At the moment flutter enables me to get the other 80% of work done much faster than native approaches.

So maybe think about what you want to learn... To code, or to make apps. Because these are different things.

There was a thread the other day on the FlutterDev subreddit about the drawbacks of using Flutter:

https://www.reddit.com/r/FlutterDev/comments/8lvi4b/what_can...

Also, we really don't know yet what Google's plans with Fuchsia are. However, I personally am using Flutter because I don't really like the Android framework, although the Jetpack release made things a bit better. Flutter does seem to have a lot of momentum behind it.

Since you mentioned Clojure, I think you can do some React Native stuff with that: http://cljsrn.org/ Might want to try that.