I recently prototyped an app in both Flutter and React Native. React Native feels incredibly fragile. Half of the month spent on a React Native app has been spent fighting with React and finding the right combinations of node and npm versions. Update some component and everything can fall apart.
Flutter's developer ergonomics are so much better. Time to first-running code was faster, and time spent due to broken shit outside my control was way smaller.
Isn't there a way to "publish", "expose" say text and other information to the system? I believe for example Windows has this, and Qt on the desktop can use it (although there were still complaints, that some really popular brand of braille reader was not working).
Simply curious, as long time ago I was heavy proponent of native only widgeting systems (like wxWidgets), but lately in favour of self-drawn one, but imitating the interface (like Qt).
"Flutter has basic support for accessibility on iOS and Android, though this feature is a work in progress."
https://flutter.io/faq/#how-do-i-do-internationalization-i18...
You should file bug reports with Apple to enable that.
If you use a lot of Interface Builder (IB), then your localization support stems from all the basic UIKit widgets having support for localization built into IB, and in that case you'll end up building custom components on top of your UIKit blocks, and localizing via IB.
One of the views in an app I work on (a Settings view) also uses some plists to generate the table, so we end up having a bit of code to generate the NSLocalizedStrings for the stuff that's not actually in the source code.
I'd agree with that in 2014 but this has been much less of a problem since the last few years. The fast pace of mobile OS's have slowed down to a halt. IOS has pretty much the same looks since version 7, Android since version 5.
The metro/material/flat design fashion has been the best thing for cross platforms apps, be it desktop or mobile, any platform or any framework.
Flutter seems to be at the right place at the right time.
I develop a lot of cross platform apps using Cordova. While this works pretty well, and indeed in recent years support for this is only becoming better, it remains that Webview based apps always feel just a tad off.
This can only be said by someone with a very little attention to details. There are constant changes to how the OS looks.
So the parent is right.
And judging from the kind of non-native look apps that are nonetheless immensely popular in the app store, few care that much anyway.
Yeah, I only just realised this after further looking into it today (when I last checked their site, they only had one page introducing the project). They try to spin this from a negative to a positive[1], by saying that they think they can guarantee the Flutter widgets quality and performance compared to native widgets, and it's on them (the Flutter devs) to make sure those widgets are up to date to the look and feel of the platform.
Which to me just seems like trying to solve a non-issue in the first place, not to mention depending on the Flutter developers to ensure their supported widgets remain up-to-date to the platforms standards and not deviate in any way.
[1] https://flutter.io/faq/#does-flutter-use-my-systems-oem-widg...
So it can be done, but I imagine it isn't easy. Qt has years of experience doing it.
For some applications (including the one I'm currently working on), you can get away with having nearly the same UI on Android and iOS, with just a little extra work to (for instance) give iOS users a more native-feeling navigation experience.
In regards to Flutter, I'm not sure if it's reasonable to expect the Flutter project to do a better job simulating native iOS widgets than Qt has been able to.
For the majority of OS APIs there are no wrappers, beyond of what is available on the desktop + hardware sensors.
So basic stuff like file pickers or asking for permissions aren't even supported.
I tried it once back in 5.4 and gave up on it, going back to Java / C++.
> Recent versions of Qt use the native style APIs of the different platforms, on platforms that have a native widget set, to query metrics and draw most controls.
Two anecdotes:
1. The TeamTalk (http://bearware.dk/) voice chat system is popular among blind people. Originally when it was Windows only, it was an MFC application. Then when it went cross-platform, the developer used Qt. But the Qt version was inferior for blind users, so the developer still maintains the MFC version just for them.
2. Rant from a blind programmer trying to develop an accessible cross-platform application with Qt: https://blind.guru/qta11y.html
On every major platform, it's possible for non-native widgets to be accessible by implementing the platforms' accessibility APIs. But Qt doesn't do this very well.
Writing code once is a non-issue?
To my eye Material applications on iOS looks like what applications should be doing - taking the HIG and improving on it in their own way.
It can also be attributed to laziness on the part of the PM and/or designer. Or in general, clients opting for cheaper solutions when hiring an agency to build apps for them.
I say all this to point out that, Android users often get the short end of the stick when it comes to app design. Often there is a strong lack of consideration on what is a native Android app feel. No consideration for the use of back-buttons, menus and UI elements using bottom navigations or custom ones instead of native Material design... Generally convergence is made for all kinds of reasons that ultimately leave Android users alienated.
Is this really a problem though? It doesn't seem crazy to want your app to just look the same on all platforms.
As someone who built some mobile apps with web technology I can see how Flutter would have an appeal because going into the project you've already given up on the native experience. There are still (unfortunately?) a world of marketing-driven apps with the brand overriding design choices which would be suited to this. Tools like Xamarin probably have a lead for line-of-business apps inside companies due to the MS ecosystem integration, but I could see people choosing Flutter for these apps if it's easy to build and maintain apps.
None of this changes the fact that for best-of-breed apps in a public store you'll need to use the native toolkits.
When I looked at a friend's Windows XP installation, it struck me that pretty much every application they used had a different UI system: WinAmp, Firefox, Opera, Windows Media Player, MSN Messenger, ...
That is true, but does anyone actually like the feel of google's iOS apps? I personally think they're awful, but the content they present is so useful that people use them anyway.
Flutter looks pretty different from React Native on one side and Cordova/webview based frameworks on the other side. Flutter is not based on webviews, but is also not using the native widgets but instead rendering custom widgets.
To me, this is a little weird. One of the downsides of Webview based apps is that it's harder to align with the native OS look and feel. React Native solves this problem, but Flutter clearly has the same problem.