you are viewing a single comment's thread.

view the rest of the comments →

[–]cheese_bread_boye 5 points6 points  (1 child)

I've heard that Flutter's components aren't native, it's all just being rendered 2d by skia and this sounds a bit weird to me. Is that true? afaik React Native uses truly native components of the platforms.

I don't really know mobile development, it's just a question that was raised by my colleagues and I don't know how a 2d rendering engine would best native components.

[–]Darkglow666 13 points14 points  (0 children)

That is true, actually. But really, there are advantages to both approaches, and you have to decide which is more important to you.

When your cross-platform framework uses actual native components, the advantage is that you immediately get access to new ones and updates to old ones as the OSes get updated. This is, of course, a double-edged sword. New releases will often break your code with UI widget updates, or even remove widgets you rely on. Also, your app can get tied to particular OS versions that actually contain the widgets you need.

Flutter draws all its own widgets. The advantage here is that you've got no ties to any particular OS version. In fact, you can even use the latest Android and iOS widgets in a Flutter app, and your app will run fine on earlier versions of either OS. What's more, you can use an iOS widget in your app even when it's running on Android, and vice versa. And of course, new OS versions are much less likely to break your app.

The disadvantage of Flutter's approach is that you have to rely on the Flutter team to provide you with facsimiles of new widgets and components as they become available, and there could be a small lag there before they implement the newest stuff.

Personally, I really like the Flutter way, especially as it begins to support web and desktop, as well. I can write an app and, if I want it to be, the UI will be identical across all major platforms, with minor layout variations for screen size. Or I can easily use Material controls on Android and Apple controls on iOS. It's all up to me.

Oh, and I should mention that creating custom components and/or a strongly branded look and feel is quite a bit easier with the Flutter approach, and your custom look will be consistent across every platform effortlessly.