I've been playing around with Flutter for a few weeks now and I'm convinced that this is the future of cross platform app development. I was initially put off by having to learn an obscure language (Dart), but the reality is, it's a lot easier to learn than learning all the semantics, tools and practices that come with a massive ecosystem like React.
I like the direction that Flutter has taken, cross-platform without the baggage of being a web platform.<p>If you know JS and Java, Dart is very easy to learn. About a few hours' worth of tinkering and you'll be good.<p>I had an Android app [0] that I was trying to build with Kotlin in the evenings/weekends. I switched to Flutter, and was able to get something out of the door in less than the time I spent on Kotlin/Java.<p>I like the mix between Flutter and being able to call native APIs. The only thing I'm missing right now is good maps support. Google and Mapbox have some prototypes, but it's still too early to use them (for what I want to do).<p><a href="https://play.google.com/store/apps/details?id=za.co.movinggauteng.mytrain" rel="nofollow">https://play.google.com/store/apps/details?id=za.co.movingga...</a>
This all sounds very cool until you need something in your app that is not provided as third party module yet, or numerous third party plugins that you are using start being unmaintained or buggy or they don't support your use case.<p>Then you'll need to write your own plugin in native language, but you have been writing in Flutter and you don't know enough about the native platform.<p>My opinion, if you don't know native development yet, make two "boring" applications in kotlin and Swift and learn the native platforms. Long term you'll be a better more complete app developer. Later if you want to try flutter or react-native you won't be locked by what plugins can do.
The title is a bit of an oxymoron; aren't production-ready and beta mutually exclusive in most cases? The examples they showcase seem like pretty small and simple apps. The musical one seems like it could've easily been a web app, since it's just displaying information.
I am having a side project built with Flutter.
(here: <a href="https://play.google.com/store/apps/details?id=zero.sleep.comchat" rel="nofollow">https://play.google.com/store/apps/details?id=zero.sleep.com...</a> ). The ecosystem is not as big as ReactNative (because Dart + it's new) but the developer exerience is really good. Dart is not that bad, and I really love the toolings even they were in the experimental state. Hot Reload, good IDE, typed, Java-like but less verbose, stream...
There are several aspects of Flutter that are compelling. The two which I find the most interesting are speed of development and the platform independence when designing the app.<p>Speed of development: I've seen Flutter development referred to as a "double hot reloading" dev paradigm: UI and app logic. Hot-reloading the UI on design changes isn't new (React Native, NativeScript, and even Xamarin can do this) but the team at Google made a purpose-built debugging compiler for Flutter which separates state management from the app logic so if you're working on code deep into an app and need to fix something in the logic, the executing code is reloaded while the app's state and UI remain where they are so you don't have to start over from the launch screen, log in, start your transaction/order/process..... This process cycle -- launch, login, start an order, get to the state of an order to test the logic I just altered -- used to consume five to ten minutes per iteration when I was doing Xamarin work. Being able to edit and re-run the application logic without losing state and starting over is HUGE!<p>Platform independence: the UI for Flutter apps doesn't rely on the native OS widgets of iOS or Android (or Fuchsia!) but a C++ layer that bundles and ships with the app in question. It's akin to building a business app in game template where you can custom-define everything about the UI and any widgets you want to use... a lot of work but they will look and act the same on iOS and Android (and Fuchsia) and presumably run fast. This is a massive difference from Xamarin where cross-platform apps end up using the platform-native widgets which is known to result in non-trivial amounts of "if (Platform_Android) {...} else if (Platform_iOS) {...}" or just going the more sure-fire way of not entering Xamarin-debug-hell: make the UI for your app using the platform-specific Xamarin-tooling and move as much code to the share logic layers which don't need to be changed between Android and iOS.<p>The final thing I'll say about Flutter: I told a colleague who thinks that C++ is the <i>ideal</i> cross-platform mobile language about Flutter. Two weeks later he came back, told me he made a demo app with it, then decompiled the resulting IPA and APK files to inspect the assembly code and he concluded that it was essentially the same as if the app had been written in C++ from the get-go. I'll take his word for it since I lack the skills to verify that for myself but it certainly speaks well for the performance potential of Flutter!
Biggest blocker for me is not being able to use WebView.<p>Issue <a href="https://github.com/flutter/flutter/issues/730" rel="nofollow">https://github.com/flutter/flutter/issues/730</a> has been open for 2+ years with no solution.<p>It would be nice to know how big of a challenge this is or if there is a plan to solve it at all.
How good is FFI in Dart? I mean how fast and easy is it? I see that it can call C and C++ libraries, but that's nowadays a basic requirement for any FFI. I'm looking maybe for an opinion and maybe some kind of numbers to back up it's performance.<p>As far as I understand it on Android it's compiled to a CPU native binary and has to use NDK and JNI to do anything. If that's a fact it's funny that on Google's own platform it has to go through two FFIs - Dart to C to Java. While on iOS just one - Dart to C, because what's there not to it for Obj-C?<p>I'm dreaming for a truly native everywhere platform. Something that would compile to DEX or JVM byte code for Android, CLR on Windows and a binary everywhere else. While using native widget toolkit for each platform - practically without any FFI. Also respecting HIG of each platform. Yeah, I'm a dreamer.<p>I heard about <a href="https://www.elementscompiler.com/" rel="nofollow">https://www.elementscompiler.com/</a> , but I would also like for it to be open source. :P
On iOS it's not possible to seamlessly integrate any custom UI drawing with OS animations (keyboard, rotation). This means that certain types of apps will never feel right on the platform, which should significantly limit usability of the framework outside of Android and desktop.
Fun fact: on pre-release Angular 2 versions, Dart was it's main language. My hypothesis is that, if they decided to continue using Dart, probably we would have more Dart developers and this could have lead to a faster Flutter adoption.
Flutter is by far the best UI library I've dealt with. Its like React, but without the nasty JSX syntax. The APIs are sane and thoroughly documented. Its layout model is (by design) super simple, so it's really quick to prototype and iterate. The developer tools are top-notch: great support in IntelliJ, hot reload.<p>But the best thing about flutter is the rendering. It's completely consistent across platforms because it renders every pixel itself and because of this it's also really easy to draw exactly what a designer envisioned.
I liked the idea of Flutter since I saw it for the first time probably long time ago.
Dart as a language choice was throwing me back though, but in general this language is very similar to ES6 and makes OO easier. For example it doesn't require to use `this` in methods. I wish it was TypeScript instead, because it has more mature tooling and community support.<p>I'm still hesitant to put my hand on it for side project until it's more popular. Chicken and egg problem I guess.
> Alibaba praises Flutter for its consistency across platforms<p>As a user, I don't. Sure, on Android Flutter looks OK, but on iOS it looks out-of-place.
A few months ago, I began using Flutter for a sideproject (That I wanted to release).<p>Although the developer experience is absolute fantastic (And definitely the future), the plugin ecosystem is extremely lacking. I wanted to use AWS, and there was 0 backing for it. Since I didn't want to interact with raw AWS APIs, I moved to React Native.
Flutter looked absolutely perfect to me until I looked into calling C++ libraries, in order to facilitate a mobile version of a desktop app made with Qt/C++. It turns out the only way to call C++ code is to write two separate wrappers, one in Java (with NDK) and one in Objective-C.<p>It seems like a pain in the ass to have to go through two separate channels to access code that's perfectly cross-platform to begin with.
The part I wish to have for things like this:<p>> We're also working to make it easier to add Flutter to your existing Android or iOS codebase.<p>Ideally, it must just refer a single lib + provide the path to the dart code/resources folders. Plus have a truly nice bridge/callbacks so I could have the heavy logic inside my native code.<p>ie, as easy as possible like with a webview.
How does it compare to React-Native?<p>I know it compiles to native, but on the other hand only the business-logic in RN is written in JS, UI and bindings are native.<p>Create-React-Native-App and Expo already deliver very good UX.<p>My main pain points with CRNA/Expo are bundle size and in-app purchases, not performance or DX.
Apple really need to react if they want swift to get any traction. IOS hasn’t had any major UI update since iOS7 , and android is a mess anyway, so using a cross platform now makes more sense than ever. The icing on the cake would be to have a path for reusing dart business layer between flutter and angular.<p>That’s a really promising stack.
I keep checking up on issue 730 once in a while:<p><a href="https://github.com/flutter/flutter/issues/730" rel="nofollow">https://github.com/flutter/flutter/issues/730</a><p>Nope. Still no inline webview component.
This has been posted 4 times before with zero interest in it when it was announced a month ago.<p>Did something change?<p>Did someone just want an excuse to talk about flutter for a bit?<p>I'm quite opposed to this 'post random link on topic X because I want to talk about X' thing.<p>If you want to talk about flutter at least bother to find something which is technically interesting to read. This is just marketing talk.