
Google's cross-platform Flutter UI toolkit goes 1.0 - mikece
https://techcrunch.com/2018/12/04/googles-cross-platform-flutter-ui-toolkit-hits-version-1-0/
======
pzo
Writing plugins/bindings for native code in flutter doesn't look fun. Almost
100 lines of code to write binding for function that doesn't take any
parameters and returns simple 'int' (int getBatteryLevel()). This just looks
even worse than JNI to me. Don't want to even thing how long time it would
take me to write bindings for function that do image processing.
[https://github.com/flutter/flutter/blob/master/examples/plat...](https://github.com/flutter/flutter/blob/master/examples/platform_channel/lib/main.dart)

Which is sad because I would really want to have some fast and easy access to
useful c++ libraries without wasting lots of time writing and maintaining tons
of bindings for Java, ObjC, C.

We are on the verge of VR and AR and I don't see how flutter can help e.g.
processing >100fps Video Feed using OpenCV library. The demo they presented on
stage with ML and smile detection had quite big latency. I wouldn't call it
real time.

So far it seems the easiest way to call c++ functions is using ObjC++ or Qt
framework.

~~~
izacus
> We are on the verge of VR and AR and I don't see how flutter can help e.g.
> processing >100fps Video Feed using OpenCV library. The demo they presented
> on stage with ML and smile detection had quite big latency. I wouldn't call
> it real time.

I can't find any claim from Flutter team that 100fps video processing is even
their goal. So that's a strange metric to measure it by - especially since
it's competing against Javascript interpreted code which is far from fast by
any metric.

> So far it seems the easiest way to call c++ functions is using ObjC++ or Qt
> framework.

On mobile? Qt really isn't pleasant or usable on mobile.

~~~
pzo
I have recently gave a look at Qt after 5 years and it seems lots of things
have changed for the better. You get the same hot reload like flutter when
modifying GUI using QML (with V-Play you can even hot reload not just on
simulator/emulator but on real device). Qt material theme has good look and
feel. Sadly iOS theme is a little bit lacking.

C++ is probably not the most productive language to write business logic but
on the bright side Qt Company recently started supporting Qt for python
(Pyside2) - sadly not on mobile devices for now. However it seems you can use
PyQT5 on mobiles nowadays. This would be the best of all worlds IMO: 3 highly
popular languages with rich libraries, tools and ecosystem -> C++ for speed
critical code, Javascript/QML for UI and layout, Python for business logic and
as a glue.

Qt also gives me more confidence that is not going away anytime soon. It
survived many years and acquisitions (Trolltech, Nokia, Digia) and have some
big clients/users in automobile and open source (KDE).

I will closely follow Flutter thought as well as React Native. The latter one
also it seems noticed what a pain is writing all those bridges and looks like
they are working on it to fix it with new architecture.

~~~
nottorp
Sadly, Qt has so many threats on their download pages that I feel it's only
suited to companies that can keep full time lawyers on payroll...

~~~
kbumsik
What? Qt is mostly LGPL. You don't need a lawyer.

~~~
nottorp
Try to download it from qt.io. You will have to go through several screens
saying "Are you sure you are able to comply with the LGPL? Wouldn't you rather
get the commercial version for peace of mind?". If that isn't an implied
threat, i don't know what is.

~~~
freedomben
I don't approve of that tactic (in fact it drives me nuts), but I will say,
Qt's license fees are quite reasonable, and then you get to link statically
with no risk of violating the GPL.

~~~
kristoffer
Reasonable? It's about $500 / month / developer with additional royalties if
you are shipping devices with Qt firmware. Sure I think Qt/QML is the best UI
toolkit available but this crazy pricing is driving me towards any possible
alternative. So I'm really hoping Flutter will take off (for desktop/embedded
as well, not only mobile).

Note that Qt is GPL3 nowadays so you can't really ship embedded devices with
Qt without paying.

~~~
pjmlp
A great toolkit like Qt, including Qt Creator and UI designers, doesn't get
written during late nights and weekends.

They are pretty cheap considering the typical prices on their target markets,
embedded tooling, medical devices, enterprise solutions.

Naturally they decided to pivot to those markets, as Trolltech has hardly seen
any significant monetary profit from FOSS.

So it is only fair that those that don't want to pay, also ship code free to
the others.

~~~
kristoffer
Most embedded tooling is free nowadays. Free software has eaten the world and
will continue to do so.

I will use a free UI toolkit when I can. Qt will kill itself with their
current pricing model.

Automotive is moving towards Android. Qt is not good for medical either
because it is not really certifiable.

~~~
pjmlp
Actually what I predict is the return to shareware/public domain models, where
the free software is only the tip of the iceberg of the stack one actually
needs for production code.

The trend is already visible with SaaS, Cloud, IoT,...

Qt is certainly certified for medical use, [https://www.qt.io/qt-in-
medical/](https://www.qt.io/qt-in-medical/).

I have hardly seen any big Android Auto adoption.

The biggest foe of Qt in Automotive is Web stack.

~~~
kristoffer
Ok I'll admit I'm not familiar with medical certification. I know that the so
called Qt Safe Renderer for ISO26262 compliance is a bit of a joke at least.

I have seen two very big Qt projects being cancelled due to Android. Not the
Android Auto app but native Android for IVI.

I don't see any indication of your vision for shareware. The trend is towards
more and more software being licensed under licenses such as MIT.

~~~
pjmlp
> The trend is towards more and more software being licensed under licenses
> such as MIT.

Which is exactly my point.

Give the tip of the iceberg for free, charge for everything else and give as
little back to upstream, if anything.

------
jmull
Cross-platform frameworks that don’t use native controls have suffered from
problems...

\- They inevitably don’t look or work like native apps in ways both big and
small, frustrating and annoying users. (... the spell-checker doesn’t work
right or text selection is janky or unavailable where it should be, certain
short-cuts work differently or have different gestures or keys, etc.)

\- they don’t get updates to native controls... e.g. if the OS adds some new
drag-and-drop capability to text fields the framework doesn’t get it unless
and until the framework is updated (and the app is updated to use the newer
version of the framework). Of course, some things are never deemed important
enough to be adopted by the framework.

\- Ambitious frameworks that really try to minimize the gaps between apps
build with the framework vs native app grow to be very large. They take on the
role of the entire app-facing OS API, which is truely massive in today’s
systems. This leads to slow-loading/building, resource-hungry apps. Each app
becomes a mini-OS unto itself.

\- there are cross-platform issues, like fonts that fit on one host OS get cut
off in another, or differences in volume control etc.

\- dealing with the cross-platform issues the framework doesn’t solve becomes
very difficult for the app developer. They’ve got to find a way in, through,
or around the framework (in an area it already isn’t handling well).

\- devs have yet another set of tech and tools they have to master. And I mean
devs in the wide sense here, designers, coders, testers, etc. Some also have
to become masters of how the framework and each host OS interact, in order to
debug the inevitable problems.

\- many potential third-party tools will have native support and bindings but
most won’t make accommodations for your framework, so you end up having to
support that yourself, or do without.

Building and maintaining an app twice is a very serious expense. But the
expense of dealing with the issues with crosss-platform frameworks can be
pretty big as well. Of course it depends on what you’re doing (shorter term
and longer term) whether or not it makes sense. But go in with your eyes open.
Consider other options (like examining your app architecture and see if you
can’t find a way to factor some of your naturally cross-platform stuff into a
shared library usable by the native apps of each platform you support).

~~~
coldtea
> _\- They inevitably don’t look or work like native apps in ways both big and
> small, frustrating and annoying users._

We're way past that in the mobile world, where both Google, Facebook, and
other top dogs use non-native cross platform frameworks and looks (e.g.
Material UI).

~~~
npunt
To be fair, just because bigs use their own frameworks doesn't mean they
produce great UX. There's an added learning curve to any non-native app that
users incur when this happens - things are out of place, don't work as
expected, features don't exist, etc. For example:

\- Facebook doesn't use standard share sheets or web views. So if you're
viewing an article, you can't use reader mode and you lose the (considerable)
power of share sheets to do things like sending an article to another app or
take an action on it.

\- Gsuite doesn't register left swipe as back even though 99% of apps on iOS
do. Icons for common actions are subtly different and make you double-take
while you understand what they do. Accessibility options like larger text do
not work, so if you're vision impaired good luck trying to figure out what
you're looking at. And there's a ton of other quirks that have existed over
the years including scaling to new resolutions/ipads, problematic text
selection, performance, etc. It's not as bad as it used to be, but it's still
not a pleasure to use Gsuite or any material design on iOS.

While many apps may use cross-platform frameworks solely for saving
developer/designer time, the bigs use them for an additional strategic purpose
that is detrimental to users.

\- Google wants you to be familiar with their apps regardless of platform, so
that its easier to get you to switch to Android or Chromebooks.

\- Facebook wants to keep you in the app as long as possible, limit social
sharing outside of their app, and spy on your browsing activity, so they add
friction and don't use modern iOS web views that prevent that.

I wouldn't take cues from the bigs and just assume because they do it, it's
the best course of action.

~~~
EGreg
It depends on what you mean by best.

For us, we want to use the web stack so our stuff works across all platforms.
So we use Cordova. We realize that over 90% of users just want to use the main
interface and not some fancy OS feature. All our effort goes into making the
product rock solid stable, engaging and easy to use. We aren’t actually
interested in making it feel exactly like a native iOS or Android app.

~~~
johannes1234321
Well, such things are causing subtle annoyance for users. This works as long
as the value you provide is good, but the more and app is just a bad we view
the more likely it becomes that people uninstall it or look for alternatives.
Unsurprising consistent behavior is a value.

~~~
s17n
> Unsurprising consistent behavior is a value.

Looking at the last 30 years of software development, it's pretty clear that
users don't care very much.

~~~
ridiculous_fish
They do care. Try writing a DOS or Blackberry-style app today and see what
happens. Software today has internalized the idioms so much that its
developers don't even realize it.

"My app is a snowflake and needs a custom design language and UI." You're vim
or Photoshop or AutoCAD or Excel: you're targeting dedicated users who are
prepared to invest in learning a specialized UI. Fair enough.

But if you're not one of these highly professional apps, then custom control
just makes the app less predictable, harder to use, and often inaccessible for
users with disabilities. Not good.

~~~
kangoo1707
Website (+responsive mobile sites) have been using custom UIs for years and no
one bats an eye

A framework for mobile uses custom UIs and everyone loses their minds?

~~~
npunt
1\. People _regularly_ complain about inconsistent web UI.

2\. Even web apps often have similar idioms and patterns to their UI that
they've settled on. It's their own patterns that are different from desktop
OS, it's basically another category.

3\. Most web apps are used on desktop, not mobile. On mobile, it's mostly
native apps that are used. So they're not substitutes.

~~~
oblio
Many "native apps" are just "hidden" web apps, users just don't know it.

~~~
maccard
Such as?

~~~
oblio
Every Cordova ([https://cordova.apache.org/](https://cordova.apache.org/) ->
search for showcase) or PhoneGap
([https://phonegap.com/app/](https://phonegap.com/app/)) app.

------
szemet
I have made an (unofficial/private clone of) Azul boardgame in Flutter
(intended as a christmas present to my wife).

Whithout having any Dart or frontend or UI experience (I have always progammed
backend and CLI apps), I could make a simple working game in maybe 10 hours -
and it is mainly due to the instant feedback cycle.

The whole thing is less than 600 lines of Dart code. (and about 100 lines is
to deep copy game state objects (for the undo functionality) as Dart can't do
that automatically.

The design is simple, just circles, shadows and small animations (the player
in turn gets magnified)[1], but with zero experience in the UI domain I
actually barely beleive that I have made it ;)

Of course games are absolutely not affected by the native or not native widget
issues, and also I did not use any advanced services from the platform, so
can't say much about those weaknesses.

I was really happy with it, I would definitely recommend it to similar
hobby/beginner projects.

[1] [https://pasteboard.co/HQdDD4r.png](https://pasteboard.co/HQdDD4r.png)

------
scotchio
Flutter looks amazing!

I was looking for some new dev challenges and wanted to mess with some mobile
app development that is outside of the React Native / Ionic / js world.

Gave Flutter a serious look, loved it, but ultimately decided to just skip and
mess with Swift and Apple's tools - so no Android stuff for me for now. I just
don't trust it to be around long enough to be an investment for me.

I know I'm just 1 developer working on a crappy hobby app for fun, but
Google's quick lifecycle of products has real impact. But then on the other
hand I love Firebase. Just wanted to share.

~~~
warent
"I just don't trust it to be around long enough to be an investment for me."

Normally I would be inclined to agree with you given that this is Google, but
the good news is that Flutter is open source. So even if Google discontinues
internal development on it, it's likely that the community will continue it
anyway.

~~~
nailer
Dart (the lang used in Flutter) already failed to gain traction in the web dev
community and nobody seems to be maintaining it there.

~~~
dragonwriter
> Dart (the lang used in Flutter) already failed to gain traction in the web
> dev community and nobody seems to be maintaining it there.

Dart for web underlies Hummingbird, Google's Flutter-for-web effort that was
also announced as a sneak peak alongside the Flutter 1.0 announcement, so Dart
for web is very much alive and maintained at Google.

~~~
nailer
You're missing the point. OP asked what would happen if Google abandoned the
project, and it's pretty obvious Dart would die as it being maintained by
Google, not the community.

------
wootie512
I have been a freelance Android Dev for past 4 or 5 years. I have recently
built out a flutter app for a client. And honestly I am now looking for more
Flutter work.

UI development in Android is such a pain and I feel like I spend most of my
time trying to get the UI just right. With Flutter I am building UI so much
faster and getting to focus on the actual logic of the code. Dart was fine, I
learned it as I went. I enjoy it more than Javascript but like Kotlin much
more.

The app I built with Flutter was pretty straightforward, so I haven't
stretched the platforms capabilities, but hoping I get the chance to.

~~~
weberc2
I haven't touched Android development since 2012. I remember the experience
being a terrible hodge-podge of XML and Java which effectively required an
absolutely attrocious IDE and an impossibly slow emulator. I assume things
have changed since then, but I wonder by how much and if Flutter's workflow
skirts any of these issues altogether.

~~~
kllrnohj
> I assume things have changed since then

Yes, tremendously so. It's still XML for basic UI, but Kotlin is the primary
language of choice these days, Android Studio is a solidly world-class IDE,
and the emulator is very fast.

> but I wonder by how much and if Flutter's workflow skirts any of these
> issues altogether.

Flutter uses the regular Android emulator, and although you have more editor
choice the recommended was to just use a plugin for Android Studio.

~~~
freedomben
Is there any alternative to XML? How often do you find yourself hacking XML
directly?

~~~
kllrnohj
Your layouts & styles are typically all in XML. But honestly I don't find it
bad - it's not "proper" XML, so there's not a ton of cruft. It's really more
like XHTML.

It works fine.

------
rhodysurf
Flutters Hot Reloading has spoiled me forever.

I am a C++/mobile dev and I couldn't get myself amped about React Native
because you have to do all the layouts through style-sheets. I am not a web
dev, so style-sheets are pretty foreign to me beyond the basics. With flutter
I can do all the same stuff but with auto-complete and in a hierarchy I
understand.

I do wish the controls were native, but the customization you get instead is
pretty powerful.

~~~
Reedx
Haven't tried Flutter yet, but I feel the same way ever since React/Vue hot
reload. It's a game changer. I really really miss it whenever I'm working on a
site or game that doesn't support it. Once you get used to it, it feels
painfully slow developing without.

------
habosa
Look at how many comments on this, or any other Flutter thread, mention hot
reload.

What I take from that is this: if your toolchain makes rapid iteration easy
people will figure out how to work around almost anything else.

Language/framework/tool creators rarely put enough time into the developer
experience. And by that I mean the experience of a developer working with your
tool for 8 hours a day. I can get more done with a crappy tool with 500ms
compile time versus a perfect tool with 10s compile time.

~~~
cztomsik
I believe rapid iteration (and learning curve) is what made php and javascript
(and delphi, anyone?) that popular.

I'm happy there's another platform but they really should use some existing
language with mature tools and libs. Why reinvent everything again? Unless
their real intent is to lock you to their own ecosystem and then mildly steer
you to using or preferring to integrate with their own products.

BTW: Is dart really open? Publishing sources does not mean a thing, is Google
making choices?

~~~
Comevius
[https://flutter.io/docs/resources/faq#why-did-flutter-
choose...](https://flutter.io/docs/resources/faq#why-did-flutter-choose-to-
use-dart)

"Is dart really open? Publishing sources does not mean a thing"

BSD license, ECMA standard....
[https://github.com/thosakwe/xart](https://github.com/thosakwe/xart)

------
dkobia
I've been using Flutter for a little over a year and I absolutely love it. Hot
reloading, Dart tree shaking, Static type checking, etc. What's not to love?
Dart widgets are consistent, making UI design easy peasy. UI widgets are
definitely skewed to Android (for now), but iOS work is moving quite fast.

Try it, you'll love Dart.

------
tobiaswk
I've been following and using Flutter since release 0.2. I think Flutter is an
amazing project. It makes writing concise and beautiful apps very easy. I've
come to love Dart and the whole Flutter framework. I really think it is the
best framework to write Android applications. It also works great for iOS were
you can either choose to use Material or Cupertino components. It is a huge
improvement over the old Android SDK; which is quite outdated in my opinion.
It's too hard to create a beautiful app with the current Android SDK. To many
hurdless. Flutter feels like what developing an Android app should be like
today. Another thing about Flutter is that it's also ready to work with
Google's (upcoming; maybe) Fuchsia OS. One loose end is still the plugins for
native features on either iOS and Android. There are many community driven
plugins which aren't really maintained. Fortunately there is also a large set
of plugins maintained by the Flutter team itself.

I've tried Xamarin, React Native and Cordova (god forbids) and native
development on iOS and Android. My preference is Flutter.

I've done one big(ish) project with Flutter and it's called "My Leaf" and it
is a third party alternative to the NissanConnect EV app. It's used for
controlling the Nissan Leaf and Nissan e-NV200 (both EV's). It's open source
and available on Android and iOS;

[https://play.google.com/store/apps/details?id=dk.kjeldsen.ca...](https://play.google.com/store/apps/details?id=dk.kjeldsen.carwingsflutter)

[https://itunes.apple.com/us/app/my-leaf-for-nissan-
leaf/id14...](https://itunes.apple.com/us/app/my-leaf-for-nissan-
leaf/id1436701776)

I've seen some of the comments in this post talk about developing plugins for
Flutter. I actually think it is easy and does not require much boilerplate
contrary to what people say. My guess is that they really haven't tried
writing a plugin but only peeked at the documentation.

------
bsimpson
Flutter renders the whole UI, like a game engine. In the past, this has meant
that if there isn't a Flutter implemention of a component (like a video player
or map), you couldn't add it to your app. I don't know if that's still true.

[edit]: It looks like this has been addressed with the PlatformView widget:
[https://developers.googleblog.com/2018/12/flutter-10-googles...](https://developers.googleblog.com/2018/12/flutter-10-googles-
portable-ui-toolkit.html)

[edit]: Sorry, bluetidepro - this was supposed to be a reply to you.

~~~
stefan_
That's modern development for you. Shipping a copy of Skia so you can render
exact facsimiles of Android widgets to a Vulkan context and avoid having
Android render Android widgets with Skia to a Vulkan context.

A full Chrome copy for your desktop app is whatever, we have the resources,
but on smartphones this is actively harmful. It bypasses the hardware
compositors. Displaying a video, they have to render that to a graphics
texture; on many smartphones, the IP that is doing hardware video decoding has
nothing to do with the GPU and they might very well not use the same formats,
requiring CPU conversion (if it's at all possible).

~~~
vvanders
For bonus points you've probably broken accessibility on many platforms as the
way that a11y works is intrinsic to the native widgets used by a platform.

~~~
untog
I wouldn't assume that. It's literally the number one thing people bring up
with custom UI components, I'd be very surprised if Flutter ignored the issue.

~~~
discreteevent
[https://flutter.io/docs/development/accessibility-and-
locali...](https://flutter.io/docs/development/accessibility-and-
localization/accessibility)

------
thrownaway954
Like I said yesterday "The road block for adoption will be Dart. Why they
didn't just choose Typescript or go with native javascript is beyond me. No
one uses Dart. It was probably the poorest design decision they could make."

The comment from pzo points out an even worst of an adoption showstopper.

~~~
deweller
Here's some of the explanation about why they chose Dart:

> There’s a lot of nice properties of Dart, we talk some about this on our
> website at our frequently asked questions. One of the nice properties of
> Dart is that it has a really fast garbage collector, one of the choices that
> we made in Flutter was to have this reactive style system where it’s very
> common to allocate thousands of objects in a – if not, tens of thousands of
> objects in a single frame.

> In a span of a few milliseconds and then immediately let go of those objects
> again. There’s a variety of ways to do that but Dart, having a generational
> garbage collector, can handle large volumes of short lived objects very
> quickly. Dart also has some really nice performance characteristics, it has
> an ahead of time compiled back end which allows us to compile straight to
> native arm code, allow us to achieve really fast startup on really
> consistent performance and Dart also has a nice focus on developer
> experience which really got along well with my team.

From [https://softwareengineeringdaily.com/2018/07/09/flutter-
with...](https://softwareengineeringdaily.com/2018/07/09/flutter-with-eric-
seidel/)

~~~
thrownaway954
No one uses Dart. No one is going to switch from React or Vue to Flutter when
they can't bring over their TypeScript skills and tooling. It was a stupid,
arrogant decision on Google's par, end of story.

~~~
Zerocchi
As someone who use Java a lot and don't favor Javascript I'm grateful there is
Dart.

~~~
shrewduser
Typescript isn't JavaScript

~~~
leeman2016
In fact, one of the best thing about typescript is that you can bring in
almost everything you know about javascript into the game.

It took me few days to pick it up when moving from JS to typescript. I don't
get it when people say it is complex or adds complexity.

~~~
kkarakk
> I don't get it when people say it is complex or adds complexity.

js is the complexity people are worried about. the number 1 reason i'm
considering going to flutter over react is having to learn js

------
saagarjha
> One of the challenges that React Native developers face, or have reported in
> the past — one challenge is that native React Native code is written in
> JavaScript, which means that it’s run using the browser’s JavaScript engine,
> which immediately kind of move this a little bit away from the native model
> of the platform.

Calling React Native “not native” while eschewing platform UI widgets is a bit
thick. I’d actually of the opinion that React Native is “more native” than
Flutter is; it might be a bit slower but it is much easier to build apps that
could pass as actual “native” apps because the React Native team doesn’t need
to try to emulate system controls.

~~~
myko
> React Native team doesn’t need to try to emulate system controls.

The solutions for push navigation across Android and iOS using React Native
were pretty poor and didn't emulate system controls the last time I used them.
Has that changed?

~~~
saagarjha
Not sure. But Flutter can't even get switches and text fields to work right,
so it really has much further to go than React Native does.

------
pritambarhate
One of the main issue with Flutter is that you can't embed a native view
inside a flutter widget tree. This makes it limited as we can't have inline
maps or custom video views.

There are people working on it. The progrss has been slow. I checked a couple
of weeks ago and the issue was still open.

But as far as I know you can have a native view in its own activity.

Though not a blocker for simple apps which previously used Cordova or ionic, I
don't think Flutter is ready to replace native development for immersive apps.

Embedding a native view in cross platform UI is possible with Xamarin and
React Native, so they are more practical choice for certain types of apps that
need this.

~~~
matt2000
I think this is one of the things they announced today, search for "Platform
Views":
[https://developers.googleblog.com/2018/12/flutter-10-googles...](https://developers.googleblog.com/2018/12/flutter-10-googles-
portable-ui-toolkit.html)

------
parvenu74
Google Developers' Blog has just posted an announcement on Flutter 1.0:

[https://developers.googleblog.com/2018/12/flutter-10-googles...](https://developers.googleblog.com/2018/12/flutter-10-googles-
portable-ui-toolkit.html)

------
mikece
Google has a history of introducing products and then killing them. For
developing mobile apps they currently support "vendor native" via Android
Studio using Java or Kotlin, Progressive Web Apps, and now Flutter.

Will Google really support all three over the long term?

~~~
bsimpson
If you consider APIs that power its businesses, Google's support history is a
lot better. Dart and Closure were never popular outside Google, but they're
still invested in because they are used internally.

Android and Chrome are both heavily invested in by Google, with massive
external ecosystems too. Speaking in a personal capacity with no insider
knowledge, I'd be shocked if Google stopped supporting either.

The UI for Fuchsia is written in Flutter, so it's got a pretty big internal
customer too:
[https://fuchsia.googlesource.com/topaz/+/HEAD/shell/](https://fuchsia.googlesource.com/topaz/+/HEAD/shell/)

~~~
on_and_off
You mean the OS that is developed independently from Android with completely
separate teams and that nobody knows where it will be in 2 years ?

Since this is Google we are talking about, no warranty that this will ever go
on one of their flagship phones.

~~~
minieggs
That's just a senior dev retention project.

~~~
snaky
Or maybe not, and that's Android vNext.

------
parvenu74
The widget layer of flutter is Skia which is written in C++ and Flutter apps
compile to ARM binary (native) code. Someone else asked about whether a
Flutter app can be ported to Linux; why not compile both the logic and the UI
directly to WebAssembly?

~~~
forgot-my-pw
There's Flutter desktop: [https://github.com/google/flutter-desktop-
embedding](https://github.com/google/flutter-desktop-embedding)

And web: [https://medium.com/flutter-io/hummingbird-building-
flutter-f...](https://medium.com/flutter-io/hummingbird-building-flutter-for-
the-web-e687c2a023a8)

~~~
malkia
Holy smokes! That's awesome! (I was aware of the desktop embedding, but also
on the web... that's really cool)

------
Andrex
Platform views and especially Hummingbird are huge announcements. Wish the OP
linked to the dev blog instead:

[https://developers.googleblog.com/2018/12/flutter-10-googles...](https://developers.googleblog.com/2018/12/flutter-10-googles-
portable-ui-toolkit.html)

------
rohan1024
Live stream at [https://youtu.be/NQ5HVyqg1Qc](https://youtu.be/NQ5HVyqg1Qc)

------
qwerty456127
Looks cool but not too much of cross-platform - iOS and Android only. It seems
the only really cross-platform GUI technologies still are browser-powered and
Qt.

~~~
vvilliam0
iOS, Android, and Fuscia. I just found out that there is now Hummingbird for
web as well.

~~~
neolefty
Does Fuchsia use the Material renderer, like Android?

------
Gonzih
I did a small app in flutter last week out of curiosity (fetching rss/atom
feeds, rendering html content) and was surprised how easy it was to work with
tooling that flutter provides. Also was pleasant surprised on how well Dart
fits in to this use case. Go flutter!

------
bluetidepro
Congrats on their 1.0 launch! I haven't looked too closely at Flutter yet, to
be honest. How does it compare to React Native (besides what a basic Google
search will yield)? Has anyone jumped ship for either or after trying one of
them?

~~~
mikece
Comparison: React Native (and Xamarin, for that matter) use platform-native
widgets with JavaScript composing the UI dynamically in the case of React
Native (and UI's either dynamically composed or statically compiled with
Xamarin -- depends how you build the app). Flutter brings it's own widget
layer to iOS and Android (and Fuchsia?) so it's more like starting with a
blank 2D graphics canvas and creating your own controls. Advantages: since
this rendering layer and widgets are compiled from C++ the performance is
excellent. Disadvantage: if you want a widget that isn't in the current set of
controls and your C++ skills aren't up to the task, you'll be left wanting to
do things you cannot. Not sure what scenarios are affected by this but it's
something to keep in mind.

~~~
lern_too_spel
The widgets are written in Dart, not C++. If you need a new widget, you would
write it in Dart, which is the same as the application language. This
contrasts with React Native, where new widgets/views would be written natively
and wrapped in React Native.

~~~
yuchi
I’m going to be a little bit pedantic, but that’s untrue. On React (DOM,
Native…) you create your widgets with React, and compose them as components.

If you need to go deeper (for some specific perf issue, usually for animation
stuff) then you go native. But it’s a second class approach — well, it has
first class support and is not as “second class” as it is for example in
Titanium or “completely out of scope” in Cordova.

------
arendtio
For those who don't know: The app on the first screenshot is inkino [1] which
had two Show HN in the past months:

\-
[https://news.ycombinator.com/item?id=16818170](https://news.ycombinator.com/item?id=16818170)
(42 comments)

\-
[https://news.ycombinator.com/item?id=18399542](https://news.ycombinator.com/item?id=18399542)
(version 2.0, 2 comments)

[1]: [https://github.com/roughike/inKino](https://github.com/roughike/inKino)

------
weberc2
Would love to see something like this extended to the Linux desktop.

~~~
vially
This is what the flutter-desktop-embedding [0] project is trying to address.

[0] [https://github.com/google/flutter-desktop-
embedding](https://github.com/google/flutter-desktop-embedding)

------
hknd
Damn - that VSCode theme and color scheme from the screenshot in the article
looks really nice.

Does anyone know its name?

1: [https://techcrunch.com/wp-content/uploads/2018/12/pasted-
ima...](https://techcrunch.com/wp-content/uploads/2018/12/pasted-image-0.png)

~~~
yorkstool
Pretty sure that's the Nord theme([https://github.com/arcticicestudio/nord-
visual-studio-code](https://github.com/arcticicestudio/nord-visual-studio-
code)).

~~~
hamaluik
Perhaps paired with
[https://marketplace.visualstudio.com/items?itemName=Coenraad...](https://marketplace.visualstudio.com/items?itemName=CoenraadS.bracket-
pair-colorizer) ?

------
ledriveby
Oh man, if this could get things like Signal Desktop off of Electron, I would
be so happy...

------
mixmastamyk
Would like to use it for a Linux app. Looking forward to when that has first
class support.

~~~
mikece
The widget layer is written in C++ (Skia). There's no reason the Flutter
toolkit couldn't be quickly adapted to Linux. Or FreeBSD. Or Windows, macOS,
OS/2 or even Windows Mobile.

~~~
CraftThatBlock
It does currently work on Linux, although fairly barebones. You can Google
"Fluttet desktop"

------
KAKAN
I'm currently using it as an hobby for creating simple UIs. It's actually
pretty easy, and it feels more like a newer QML kind-of language. And I like
Dart's syntax, coming from a C/Java world.

------
brailsafe
Seemed like a lot of the app highlights in the highlight real video had jank,
either when scrolling through a list of images or animating card swiping.
Anyone have insight as to why?

------
nstart
Does anyone have a feel for how good flutter's documentation for canonical
approaches to common use cases are now? The last time I tried it, even a
simple task like changing the UI when returning from a login screen was
unknown territory for many developers. The examples in the documentation were
all for single screen simple apps. Has this changed? Or is the community still
trying to figure out best practices?

~~~
kkarakk
flutter's community feels like Xamarin's community - people who are already
well versed in both android and ios development looking for a common codebase
solution. very much lacking in the documentation section in terms of how you
get from A to Z. everything is "Z can be implemented this way" w/o any
discussion of how to use it in alternate ways(like how the android and ios dev
documentation is structured) i'm gonna jump in coz it seems interesting but
i'm super afraid of the iOS painpoints i'm going to hit(I have no knowledge of
iOS development just android)

------
dep_b
I don't understand why Apple is the only one left that uses a strongly typed
pre-compiled native programming language. It really isn't hard to use Swift
compared to other programming languages. And it's a really nice to use, safe
and if you want it to be also a language that allows you to write really fast
algorithms.

~~~
amimetic
Dart is strongly typed and pre-compiled, at least when packaged. It can run in
interpreted mode in development for live/hot reload: a major advantage over
Swift. Flutter also provides a first class Reactive UI story: something sorely
lacking in native iOS (or Mac) development.

PS Java (or Kotlin) are AOT compiled in all recent versions of Android.

~~~
dep_b
> Dart is strongly typed and pre-compiled, at least when packaged. It can run
> in interpreted mode in development for live/hot reload: a major advantage
> over Swift.

Ah, that's how they do it. That's neat! But the language still has to deal
with JavaScript compatibility.

> PS Java (or Kotlin) are AOT compiled in all recent versions of Android.

But it's still a mess to call native code. And still has Java garbage
collection.

------
zahidislm
Having using Flutter since the alpha releases, it's great to see how the
framework has evolved to a production-ready release. Honestly, learning Dart
isn't that difficult nor foreign if you're coming from a low-level language
such as C#/C++/C or Java. Been enjoying using it since.

------
sebasfiorent
Looks nice. I find it similar to Adobe AIR but with DART as programming
language.

~~~
jazoom
Except Adobe Air doesn't compile to native and the apps don't run until you
nag the user to download the Air runtime.

~~~
pjmlp
I guess someone is very outdated on their information.

[https://www.adobe.com/devnet/air/articles/aot-or-
interpreter...](https://www.adobe.com/devnet/air/articles/aot-or-
interpreter.html)

Air supports native compilation since 2012!

~~~
jazoom
I'm not sure why you'd be referring to me in the third person while replying
to me, but if that's the case then yes, it's quite possible they've improved.

> SWF content on all platforms other than iOS is JIT compiled

Cool, but I use Android.

------
jimmierwilliams
It is the latest crush of every developer. Learn what are the top features of
this new app framework: [http://soo.gd/UbXY](http://soo.gd/UbXY)

------
andbberger
Flutter looks cool. Dart needs more of an ecosystem though. I was trying to
play with flutter last week, gave up when I discovered there is no standard
lib FFT implementation in Dart.

~~~
hasbot
[https://pub.dartlang.org/packages/fft](https://pub.dartlang.org/packages/fft)

~~~
andbberger
Yeah I saw that. It's just maintained by some random guy. Which is great and
all, but something like fft should really be part of the standard lib.

~~~
hasbot
I disagree. Something rarely needed like FFT should not be included in any
stdlib. Keeping it out too allows better control and more frequent releases.

------
pedrokost
How does it handle integration with maps libraries (e.g. Google Maps) and BLE
support?

Anyone has any experience with how well those work with React Native, and
could share their experiences?

~~~
rohan1024
They shown the integration today. Its so cool you would be blown away if you
saw that history of everything app demo. I am not able to find the demo app.
Its in the live stream.

------
dazhbog
How does flutter handle BLE/WiFi communication to hardware, rendering graphs,
NFC, device sensors? Any comments on the experience? Do you recommend it?

~~~
sudhirj
Don't think there are builtins for that, Flutter is more focused on drawing
UI. For functions like these it usually just makes sense to call the native
APIs over a bridge (there's a bridging mechanism included in Flutter - you
pass messages over channels to and from the native code).

------
riantogo
Does Flutter have easy modules for standard things like login, comments,
payments etc. or does that involve writing separate server side code?

~~~
Andrex
Combined with Firebase, yes, that's fairly easy to setup.

[https://firebaseopensource.com/projects/flutter/plugins/](https://firebaseopensource.com/projects/flutter/plugins/)

~~~
riantogo
This is great. Thanks!

~~~
Andrex
NP!

------
garysahota93
This looks really cool!

Could someone explain the difference between Kotlin and Flutter given that
they are both being pushed for app development now?

~~~
ForHackernews
I haven't used either, but Kotlin is a programming language you can use on
Android -- it's essentially another JVM language as an alternative to Java --
whereas Flutter is a UI toolkit you can use on multiple platforms (mobile and
desktop), think of it as analogous to Qt.

~~~
garysahota93
Ahhh. That makes sense! Thank you. I was scratching my head about it, but I
guess I just need to read more now.

------
amelius
It's sad that this thought had to cross my mind, but how long until Apple
prohibits or penalizes the use of this toolkit?

~~~
saagarjha
Why would they? I don't see any guidelines it violates, other than the loose
suggestion to have your app be reasonably designed.

~~~
amelius
> Why would they?

For reasons of business strategy. With this toolkit, the AppStore might lose
its exclusivity on a lot of apps.

Exactly what Google wants, and Apple does not want.

~~~
Apocryphon
If they did that they would also have to ban games that use game engines such
as Unity, because they're doing the same thing as Flutter.

------
bschwindHN
Does flutter have an official bluetooth/BLE library? I would have expected
that to be in place before a 1.0 release.

------
holografix
Why is this any better than React and React native? Why would I want to learn
Dart and this ecosystem?

I mean, it better be damn good

~~~
akmittal
Flutter is supposed to be much faster than React Native because of Skia engine
and its GPU acceleration and AOT compilation.

~~~
holografix
What’s “so much faster” and should anyone care unless they’re making games?

Why isn’t there an equivalent of Interface Builder for React Components?

------
baybal2
I'm surprised to see them showing Taobao app there. I know it is done in Weex,
without anything like Flutter.

------
locusm
How does Flutter go with mapping apps, location etc? is there good integration
or SDK's?

------
thefounder
What about a WASM powered UI kit? Wouldn't that finally fix the cross language
issue?

~~~
hardwaresofton
If you're looking for a wasm-enabled toolchain that runs native apps in a
similar way you should check out nativescript[0], I don't think they support
it yet (?) but that's definitely where it would land first.

Another example of where they follow standards/stick to browser specs is their
use of web workers for background tasks [1]. In comparison Flutter uses dart
isolates[2] which makes sense of course, since they use Dart -- similar
performance models (do hard stuff in another thread).

[0]: [https://www.nativescript.org/](https://www.nativescript.org/)

[1]: [https://www.nativescript.org/blog/using-workers-in-
nativescr...](https://www.nativescript.org/blog/using-workers-in-nativescript-
to-execute-javascript-on-background-threads)

[2]: [https://api.dartlang.org/stable/2.0.0/dart-
isolate/Isolate-c...](https://api.dartlang.org/stable/2.0.0/dart-
isolate/Isolate-class.html)

------
convery
For people that have used Flutter to make any app: how much memory is used at
runtime?

------
dman
Any news on if the desktop embeddings will become a supported part of Flutter?

~~~
allenbrunson
in today's keynote, google announced that you'll eventually be able to use one
dart/flutter codebase for ios, android, mac, windows, linux, and the web. you
can't get much more cross-platform than that.

~~~
dman
I am aware that you can build one codebase for all those platforms, the
question is whether all those platforms are supported. In particular
[https://github.com/google/flutter-desktop-
embedding](https://github.com/google/flutter-desktop-embedding) still says
that desktop use of flutter is unsupported.

DISCLAIMER: Opinions expressed are my own and do not reflect my employers
views.

~~~
allenbrunson
ios and android are currently well supported. the rest are somewhere off in
the future.

in the google keynote today, they revealed that the app they were using for
showing slides was a flutter app running on a mac.

------
wpdev_63
Can you target web with it?

~~~
McKayDavis
They previewed Project Hummingbird to do just that:

[https://techcrunch.com/2018/12/04/googles-flutter-toolkit-
go...](https://techcrunch.com/2018/12/04/googles-flutter-toolkit-goes-beyond-
mobile-with-project-hummingbird/)

------
techsin101
Flutter needs to add support for xml styled declarations and Swift

~~~
ssijak
No it does not!

------
ryanbertrand
Does this allow hot code-push updates like React Native does?

------
techsin101
Flutter needs jsx / xml like declarative support

------
ichekrygin
Looks great!

------
ystrdytmrrw
Nothing will make me learn or do Dart.

~~~
k__
Well, you're lucky. There is React-Native (JS/TS), Xamarin (C#) and Boden
(C++)

------
guix992
I don't understand why we have to keep reinventing GUI toolkits and layout
engines over and over again.

Why can't this domain be smarter like Compiler world and build pluggable
components? So something like, a react-engine that renders the recently
changed display node. The react-engine is offered as an API/library layer, it
could be run in browser where it works with DOM, it could be run in a desktop
where it works with GUI nodes of native GUI toolkit.

So now going from each OS to another, you don't have to learn gazillion
different ways to specify the layout. The type of nodes displayed on your GUI
app changes from each environment to another. So you get to have the same
programming techniques and you can get a web-app or a desktop app.

~~~
Hemospectrum
It's one thing to draw some widgets. That's the "easy" problem (to borrow some
AI jargon).

It's totally another thing to specify how these widgets read and write the
model in which the business logic is encoded. If you want to animate
transitions between valid model states, it all gets ten times as complicated.
And then when you try to make it performant by eliminating redundant redraws,
it becomes an even bigger mess.

There is no simple and obvious solution that tackles all of the above. The
reactive UI model (not just Flutter, but all React-like frameworks) is an
ongoing attempt to do a better job of all of it, with varying success.
Existing UI toolkits, before the introduction of this model, were not designed
for it. They were built on the assumption that the future would be a giant
object graph caught in a tangle of callback methods. If you want to make a
reactive UI populated by native widget objects, you have to figure out how to
plumb all their mutable state back into the reactive model. That's an enormous
investment of labor. Writing a new toolkit from the ground up is a huge amount
of work in absolute terms, but in relative terms it's the easy way out.

~~~
guix992
Thanks for your reply - it was a pretty insightful rebuttal.

Do you think in the future it might be possible for say Flutter to:

1\. Refactor flutter into a layout engine and gui widgets

2\. Provide the layout engine as an interface on all desktop OSes. Something
like a standardized syscall like interface.

3\. Anyone can implement a new GUI toolkit to this layout engine interface.

4\. For desktop OSes, the number of styling options is less than full blown
CSS capabilities(in HTML dom) and these options get compiled out, making
execution of native apps GUI slightly faster than DOM apps. Basically, desktop
GUI styling is a subset of DOM CSS styling.

5\. We use a JSX like templating language to specify UI that either gets
compiled to HTML or generates native GUI widgets.

Not sure all of my thoughts are 100% fleshed out but does this sound feasible
in future?

~~~
projektfu
I like the sound of orthogonal components.

------
shrewduser
google have, from a game theory perspective, made it harder and harder for me
to support their products until they become established.

not investing my time or effort into anything google has done until i know it
wont be wasted.

------
pjmlp
Unless they force Flutter upon Android devs, I will let it pass, not eager to
learn Dart.

~~~
thosakwe
It's strange to me that after all this time, every time a thread about Flutter
reaches Hn or proggit, there are multiple comments about the choice of the
Dart language.

I think they've made it pretty clear by now that they don't have intentions of
switching from Dart. Heck, they've published an entire "Why Flutter uses Dart"
article explaining their reasoning.

It's like beating a dead horse.

Besides, you could always just not use Flutter if you dislike it that much.

~~~
pjmlp
Their whole reasoning just feels like justification after fact. specially when
one has experience with older development environments which offered similar
developer workflows.

I guarantee to you that if they had choosen a proper modern language,
Flutter's uptake would be much higher.

As it is, you will see many of us complain about Dart until Flutter ends up
being replaced by something else, unless they force Android developers to
actually use it.

~~~
Apocryphon
Then why bother to post to complain? Is it necessary to also post in React
Native threads about how that framework does not fit your needs?

~~~
pjmlp
Because Flutter would be a nice framework to use if they hadn't decide to bet
on a language struggling for survival outside Googleplex.

React Native uses a programming language widely accepted, no need for
complains.

~~~
discreteevent
You said you can't be bothered to learn dart because you want to build your
skills in c# etc. As a result the only criticisms you can make are devoid of
content: It's not a proper, modern language (what?). It's struggling for
survival...

~~~
pjmlp
I can't be bothered to learn Dart because it lacks market value.

C# was just an example of a language that is actually worthwhile to have on a
CV. I could have given many other examples.

Ad Words team rescued Dart from certain death and Flutter it is attempt to
come play into the ring.

------
zmix
Meh, Dart. Yet another language to master, that does not bring me any
advantages overall, except for this very platform.

I also would welcome an XML based, declarative approach to GUI. Makes cross-
platform development even more easy.

~~~
matchbok
+1 for XML/declarative. One day :(

~~~
zmix
You still have hope?

Somehow I find it hard not to believe, that XML won't come back. One day :(

------
asien
Google is spending so much money on Flutter , it’s insulting.

Honestly, the entire industry is shifting towards JavaScript/Typescript and
the only language that they could think of for Flutter is Dart ?

This is even more Hypocrite knowing that Flutter doesn’t actually run the Dart
VM, it uses AOT and compile to native code.

Meaning we could use literally any ECMAScript language to run with Flutter
instead of Dart.

There is nothing that Dart does that justify the choice of this language.

~~~
tabs_masterrace
I'm not a fan of Dart either, but common JavaScript/TypeScript isn't exactly
the holy grail either. JS is basically unusable due to, well lack of types,
and TypeScript hacks them into it by hugely increasing complexity of
everything.

Should have gone with Kotlin. Would just sweep over huge amounts of existing
Andoid devs too.

~~~
pier25
Or Swift

~~~
marstall
That would turn a lot heads!

------
matchbok
DOA. Bad performance, weird language. It'll never be popular enough to justify
learning. Sad to see such a waste of developer time and effort.

~~~
Apocryphon
Less space than a Nomad.

