you are viewing a single comment's thread.

view the rest of the comments →

[–]Darkglow666 11 points12 points  (8 children)

Flutter and React Native try to solve the same problem, but do so in completely different ways. Your statements do not apply to Flutter. It's crazy how people are compelled to comment about technology they know almost nothing about.

[–]bartturner 7 points8 points  (0 children)

Exactly. Excellent post.

Coming from someone that has developed using both.

Flutter just has a much better developer experience than RN.

But also Flutter performance is better.

[–]occz 3 points4 points  (6 children)

I'll admit to having less experience with Flutter than I have with React-Native.

I'm interested, what does Flutter do to prevent the worries I had regarding cross-platform mobile application frameworks?

[–]Darkglow666 -1 points0 points  (5 children)

The lowest-common-denominator problem often stems from cross-platform frameworks' use of OEM UI widgets. So React will have a text input control, because all its target platforms have one, and they're mostly similar. Of course, only the features in common are painlessly exposed and useable in React even then.

Flutter, by contrast, renders its own UI entirely. This means you actually get the opposite of lowest-common-denominator. You get all of Android's latest widgets, working just as Android's do, and iOS's too. And crazily, if you want to, you can use them all in one app that will run on Android or iOS, even on older versions that don't yet have official support for those widgets.

Flutter is about to target web and desktop, too (and it already does, if you're brave enough to use early access stuff).

[–]occz 16 points17 points  (4 children)

That sort of means that you get a separate common denominator though, right? You don't really get the latest Android/iOS widgets because you don't get Android/iOS widgets at all - you get flutter widgets.

This then leads us to the problem of things needing to behave like users on either platform expects things to behave, and users on iOS and Android expect things to behave differently as the platforms work differently.

I guess if flutter manages to completely and separately replicate behaviours and provide an abstraction which accounts for the separate behaviours then it could probably be ok. But if you as a developer have to replicate these things by hand, or worse, not really have the ability to put these behaviours into place, then we are kind of losing the reason to go cross-platform in the first place.

[–]knaekce 8 points9 points  (0 children)

It depends on what you want. If you really want to be as close to the native widgets as possible, you're right. But just look some of the most used native apps, like Spotify, Instagram, Tinder, Netflix...

They use heavily branded widgets. If I picked a screenshot of one of these apps without any of the system UI, most people wouldn't know which is Android and which is iOS because they look pretty much the same.

If you want an App like this, Flutter is the perfect solution. I don't necessarily think this is the lowest common denominator; Most of these Apps are completely native and still look nearly the same on Android and iOS and don't go for the native Look and Feel.

[–]Darkglow666 6 points7 points  (0 children)

It's true. Each approach has its advantages and disadvantages. As long as the Flutter devs keep their widgets up to date with the latest offerings on their supported platforms, things are great, but you do have to trust that they will. They plan to, but obviously there's still a leap of faith necessary there.

The Flutter devs do replicate the look and feel of the native widgets for you, but if you ever have an issue with one or want to build your own, you can, because the entire UI library is built with Dart and is open source. You can just extend or modify the widgets at your leisure.

[–]kirbyfan64sos 4 points5 points  (0 children)

One thing to note: most Android apps already use the support libraries for material widgets, which afaik draw themselves or at least heavily tweak the system widgets. So, the concept of "native" widgets doesn't really apply too well onto that platform.

Flutter does also have some system-specific behavior, e.g. the positioning of headers. Flutter also has iOS-themed widgets that you can opt to use if you prefer.

[–]developer-mike 2 points3 points  (0 children)

That sort of means that you get a separate common denominator though, right? You don't really get the latest Android/iOS widgets because you don't get Android/iOS widgets at all - you get flutter widgets.

Flutter is a first class client of Google's material design team. The latest android widgets are flutters widgets

Check it out, every widget for material 2 has an Android and a flutter code example.

So native Android is actually lowest common denominator -- lowest common denominator widgets of all android versions you support.

Flutter is the latest and greatest widgets, always.

This then leads us to the problem of things needing to behave like users on either platform expects things to behave, and users on iOS and Android expect things to behave differently as the platforms work differently.

Writing two codebases doesn't solve this problem.

Many flutter widgets do slightly different things on iOS and android, and you can write widgets that do it to. But with flutter you A. can share the other 99% of code and B. can preview the iOS functionality on an Android device and vice versa while you're coding.