
Announcing Flutter beta 1: Build beautiful native apps - nicpottier
https://developers.googleblog.com/2018/02/announcing-flutter-beta-1.html
======
cageface
The responses to this article are pretty discouraging to be honest. Cross
platform mobile development is a pain in the ass. React Native is a step in
the right direction but, as anyone that has actually used it knows, it still
has some very rough edges.

Here's a completely new platform with a forward thinking, reactive UI model
and fast but flexible language that offers a much less painful environment for
us to live in day to day and all people can do is crap on it because it isn't
JavaScript and they have to learn a new, very slightly unfamiliar language.

You can learn a lot about why programming is such a shit show by reading the
comments on this one.

~~~
greenhouse_gas
I can't speak for everyone, but my problem with flutter isn't the framework -
it's the language. Or, more accurately, the fact that it's _not_ a JVM-based
language.

When Android came out, it was able to piggyback on millions of existing Java
packages (such as Apache commons). When Kotlin came out, it was able to
piggyback on millions of existing Java packages _and_ Android packages (and
even better, existing Java code can seamlessly forward work with Kotlin).

Now, Google is using its muscle to drag everyone to its language which has
pretty much no existing adoption.

Oh. And many remember Dart being optional-typed (like Typescript).

~~~
vlovich123
Well Flutter does provide for a way to call into existing native code so I
think that mitigates the code-reuse concern. The other thing to consider is
that this advantage of code reuse was never realized to iOS. Writing apps for
iOS & Android always meant having a C/C++ core with platform-specific shims;
J2Objc more recently let you write it in Java but again that just lets you
write the core in Java with 2 platform-specific independent frontend
implementations. A lot of developers just wound up writing the app twice &
shifting as much logic server-side as possible (which hurts battery too). This
is the first time you can write the app once & run on both iOS & Android.
AFAIK Dart is also only a requirement for the front-end. You are still free to
use whatever language you want for your business logic. I'm not 100% clear yet
on how good the bridging story is but I suspect it's not bad.

~~~
snovv_crash
You could also use a C++ core with Qt/QML to target not only iOS and Android
but also Windows, macOS and Linux, all from the same codebase.

~~~
BatFastard
Wow, let me stick the hot pokers in my eyes first! Qt/QML in a mobile app is
something only a masochist could love.

~~~
snovv_crash
It depends if you're trying to make your UI consistent with other apps on the
platform, or consistent across platforms.

------
skhro87
I recently rewrote a small app in flutter that was originally react native.
Initially I was sceptical, mainly about learning dart. But it wasn't hard to
pick up.

I found the development experience much smoother than react native, things
just worked, whereas in react native there were many many small bugs and
issues with the many packages required.

Flutter IDE support is good with the intellij plugin [1]. Performance, I
didn't do any benchmarks, but a simple list with thousands of items feels much
smoother on flutter than react native. There are packages for redux as well in
flutter, so state management is taken care of [2]. The only downside I
experienced with flutter is that Json handling is clumsy, apparently because
flutter doesn't support reflection, which would be necessary to have
comfortable Json-decoding like with Javas gson or go's json package [3].

Another thing to consider is that react native will render on one thread, and
handle the application logic on another thread, but that means the application
logic is still restricted to a single javascript thread, which can lead to
bottlenecks eventually. From what I understand (haven't tested), dart can work
multithreaded, having an advantages there.

End of the day, I would chose flutter over react native. Mainly because of
Javascript and all the pain that comes with it.

[1]
[https://plugins.jetbrains.com/plugin/9212-flutter](https://plugins.jetbrains.com/plugin/9212-flutter)

[2]
[https://pub.dartlang.org/packages/flutter_redux](https://pub.dartlang.org/packages/flutter_redux)

[3]
[https://github.com/flutter/flutter/issues/1150](https://github.com/flutter/flutter/issues/1150)

~~~
nimrody
How is the integration of Flutter apps with the rest of the Android
system/apps? Given that Flutter does not use the platform native widgets -- do
Flutter apps look or behave different?

How difficult it is to use a Java library from Dart?

~~~
XtremeCheese
Disclaimer: I work on the Dart VM and Flutter engine

The Flutter team has done an amazing job recreating Material and Cupertino
(iOS) widgets, and I honestly can't tell the difference. Also, platform
specific behaviors (e.g., the scroll bounce on iOS) are also preserved.

If you haven't seen a Flutter app in the wild, I'd highly recommend checking
out the Gallery application on Google Play
([https://play.google.com/store/apps/details?id=io.flutter.gal...](https://play.google.com/store/apps/details?id=io.flutter.gallery&hl=en)).
Here you can see all the available widgets for each platform and even toggle
between iOS and Android behaviors.

~~~
whalabi
Given flutter can call down to iOS with plugins, and given that the apps are
native, apparently, is it not possible to natively use the actual iOS widgets
instead of reimplementing them?

~~~
nikki93
For widgets it's not just calling to iOS that matters, but being able to
render the widgets as part of the painting process, which Fluter does as a
completely separate process from how iOS renders. So to integrate it, you'd
need something involving compositing native views properly and yet propagating
touch events to them, or rendering native views on top but doing the right
masking, or ...

------
lenkite
AOT compiled to native code that uses the native instruction set - no
interpreter/vm involved.

Uses custom rendering engine based on Skia.

Can write UX just once for all platforms if you don't mind fixing the widget
set.

Custom widgets work on all supported platforms.

Can in theory be ported to Desktops also, assuming someone writes flutter
engine bindings for Win/MacOS/Linux. If this occurs, then you will truly have
a modern, cross-XP, write-once-run-anywhere, compile-to-pure-binary, reactive
UX framework

Not a JS framework (tm)

~~~
s73v3r_
"Can write UX just once for all platforms if you don't mind fixing the widget
set."

Whenever something promises this, it usually only works kinda well on it's
"home" or "main" platform, and runs crappy everywhere else.

~~~
discreteevent
Your statement isn't true of Qt or Java SWT or Java AWT. They don't have a
main platform.

~~~
dukoid
Unlike QT, SWT, or AWT, Flutter doesn't bind native widgets, but renders
everything itself, so the way it works is more comparable to Swing though...

~~~
hota_mazi
Swing is the perfect example that such approach simply doesn't work.

At the bare minimum, you need to use the native widgets on each OS.

It's baffling to me that Flutter didn't even learn this lesson from 20 years
of agony with Swing.

~~~
Comevius
Most interesting apps tend to use custom Android views, layouts and behaviors
to create a unique, but consistent look and feel.

Flutter can do the same. There is not much difference, except that Flutter
strives to do the unique part better.

On the Windows desktop your application must be coherent with other
applications, since they share a big screen, or rather a workspace.

Either way you want to adhere to the design language of the OS, because it
tends to work better than what you can come up with, and also provides
familiarity. On Android you don't have to use the prebuilt widgets to adhere
to the material design.

Flutter also comes with widgets that look and feel very similar to the Android
and iOS ones, so you don't have to reinvent the whole wheel.

------
bbreier
I really want to give my thanks to the Flutter team. Flutter allowed us to
finally (and fairly quickly!) build a music production application on Android
with feature parity to our iPhone offering. We're just three devs working on
this in our spare time and I think without something like Flutter we'd never
have been able to complete this.

We haven't hit release yet, but we're pretty confident we'll have our Android
version out on the Play Store within about six weeks.

[https://tizemusic.com/](https://tizemusic.com/)

~~~
kodeninja
@bbreier this looks very interesting! Can you talk a bit more about how your
overall _dev_ experience was, working on Flutter? How many times did you have
to go _native_, where you had to create platform channels for features Flutter
didn't already expose? How much code sharing, if any, were you able to
achieve? Were there any corner cases you ran into?

Thanks, and good luck with the app!

~~~
fareesh
Also very interested to hear the answer to this question

------
nicpottier
This seems like a clever move by Google to build a "write once, run anywhere"
framework so that they can get some amount of apps running on their new mobile
OS spike Fuschia. All they need to do is make Flutter compelling enough for
Android developers to adopt it.

~~~
tangue
It’s very clever. Except for Dart. It has an image problem among developpers.
I don’t know why but everyone I know seems to hate Dart (the only things worse
than coding in Dart for my friends would be something like « writing amp pages
in php using Atom »), so unless they can change that or support something like
Typescript I’m not sure they’ll attract a lot of developpers.

~~~
sydd
Why do people hate Dart? It looks like a nice language, has a well thought-out
design. (I just looked at tutorials, havent written Dart code)

~~~
tangue
A while ago Google did try to ship Dart VM into Chrome (think AMP but for
programming language). The language is indeed nice, it's a branding and
communication issue, as it's often the case with Google.

~~~
gsnedders
Well, sorta. The Dart team tried to make it happen, and got a lot of pushback
from the Chrome team. I don't think you can claim that Google tried to get it
into Chrome.

------
sago
Sorry to do the picky thing and criticise a completely unrelated feature, but
I wonder if we have, or are about to, reach peak "happy mandolin and
animation" marketing videos. That is starting to feel old to me, early 2010s.

As for the actual content: they really buried the fact that it's based on
Dart. Saying that only that it "also works on dart 2" It's almost as if they
don't think that's a feature.

~~~
linkmotif
I keep hoping but year after year these videos are still here.

~~~
mixmastamyk
What alternative for a friendly intro would you suggest?

~~~
linkmotif
I wouldn’t... I think people must like them?

------
cletus
So this is the problem with any cross-platform GUI toolkit: you have to make
one of two choices:

1\. Implement the lowest common denominator between all your supported
platforms so you miss out on key features on each platform; or

2\. Bypass native widgets so you end up with your own versions of everything
where nothing quite behaves the same as native widgets do (ie Java Swing)
and/or you incur a huge performance cost (ie Electron).

This is a touch hyperbolic but only a touch.

But consider this: Android uses garbage collection. iOS uses ref-counting. On
a mobile platform, IMHO ref-counting is clearly superior and is a competitive
avantage for iOS. GC leads to unpredictable behaviour, unpredictable resource
usage and the inevitable stop-the-world GC pauses (at least I haven't seen a
GC system yet that doesn't suffer from STW GC pauses to some degree).

On a server, this is less clearcut. The locking for ref counting itself can
become hot but this just isn't really the case on an app on a phone.

It boggles my mind that years later (ARC came in in iOS 5), iOS still has this
competitive advantage and not only does Android still not have it, nor does
the Android-wannabe Fuchsia.

But back to Flutter, it uses Dart. I honestly don't see the point of Dart.
Maybe it's just me but I don't want optional typing, or rather optional type
hinting. I want static typing. The romance with dynamic typing over the last
decade I think is on a downward trajectory with the rise of the likes of Go
(really a better Python) and Rust.

~~~
cbracken
> Maybe it's just me but I don't want optional typing, or rather optional type
> hinting. I want static typing.

A ton of the community (and in particular teams using Dart at Google) felt the
same way and the Dart team has been adapting the language to reflect that.
Flutter uses Dart 2, which is statically and strongly typed.

> Garbage collection

GC is a nice value-add to the developer — most of us don’t really want to
spend a ton of time thinking about reference cycles etc. but as you note, it
has the downside of being a potential source of jank. We mitigate this in
Flutter by timing the work we do building frames and scheduling small GCs
during idle time. Code here:
[https://github.com/flutter/engine/blob/8109be8e21604df249b87...](https://github.com/flutter/engine/blob/8109be8e21604df249b87702b86e4b266ce44225/shell/common/animator.cc#L100)

~~~
markdog12
That 100ms hard-coded value is interesting. What about 120fps devices?

~~~
markdog12
Ah, ic, this is only allowed during idle time and nothing is getting painted.

------
hysan
So I took a good look at the docs and as a React Native developer, I do have
some questions:

\- Is there code linting support in Visual Studio Code? I find that having a
style guide, even if loosely enforced, helps a lot in learning how to
structure code for long term maintainability.

\- The state of packages, in particular those that expose native SDKs, looks
just like the early stages of native modules on RN. I know this is a beta, but
what is the time frame for when all of these SDKs to mature? Or is this all on
the community, in which case, I wouldn't be very convinced to use Flutter
considering how long it took for good native modules to stabilize on React
Native.

\- Why aren't the licensing requirement bits mentioned on the actual doc pages
for Drawer and Material Components in Flutter? It's in the FAQ, but if they
are required, putting them in the docs would be better:
[https://flutter.io/faq/#how-can-i-determine-the-licenses-
my-...](https://flutter.io/faq/#how-can-i-determine-the-licenses-my-flutter-
application-needs-to-show)

\- Is there a roadmap that is more detailed than the milestones
([https://github.com/flutter/flutter/milestones](https://github.com/flutter/flutter/milestones))?
With React Native, I know that support isn't going to suddenly dry up because
it's an integral part of Facebook's current tech stack. So even if they don't
focus on what I prioritize, at least I know it's being improved. With Google
and their support reputation, I'm much more concerned about spending time to
pick up Flutter & Dart only to have support taper off.

~~~
Harimwakairi
I can answer a few of these.

For Visual Studio Code support, the community has produced an extension:
[https://marketplace.visualstudio.com/items?itemName=Dart-
Cod...](https://marketplace.visualstudio.com/items?itemName=Dart-Code.dart-
code)

Regarding packages, they're a combined effort between the Flutter team and
external contributors. There are a bunch in
[https://github.com/flutter/plugins](https://github.com/flutter/plugins), for
example, with commits from both inside and outside Google.

~~~
hysan
The extension I saw in the docs, but I didn't see code linting as one of the
features. Is there code linting included?

Thanks for the plugins link. Any idea what Google's stance is on supporting or
expanding support of platform plugins? There's no issues for plugins so I
can't tell how stable those packages are. So even if it's a combined effort, I
feel weary repeating what the early stages of React Native felt like.

~~~
Harimwakairi
Linting is included with the extension (I think it's way down in the list of
features on its page, but it're there). The flutter command line tool
(included with the SDK) comes with a formatter, so it'd be insane not to hook
into it.

Re: plugins, I hadn't noticed until just now that the instructions for the
plugins repo say to file issues under the main one. There are plenty there,
though. A search for "Firebase," though:

[https://github.com/flutter/flutter/issues?utf8=%E2%9C%93&q=f...](https://github.com/flutter/flutter/issues?utf8=%E2%9C%93&q=firebase)

turns up ~350 issues.

I can't speak for the team, but solid support for platform APIs is going to go
a long way toward adoption, so I can't imagine it's being overlooked.

------
gkya
Mobile development is hard to get in. Maybe it's that I'm an outsider, but
yet, on the second most popular platform it costs you an Apple computer and
$100 for the IDE (IIRC), and on the other one the development experience is
godawful (tools are slooow and janky, hard to integrate with your usual
tooling, the program structure is incredibly complex, lots of XML, and then
there's Java). Having looked around a bit, it seems to me that it should be
easier to start with Flutter, the filesystem layout, the project
configuration, the language, they seem managable, and I've seen some youtube
videos where a guy only used VS Code and the Flutter command line. If I can
just get going with Emacs and the Flutter's command line tool, that'd be
awesome. Mobile app or game development seems to be a nice way to earn some
money developing software solo, just from your laptop. And not having to deal
with JavaScript is a nice way to spend more time for oneself. So definitely
going to re-try this (tried it before but my impression was that I needed
Android Studio, and that's a show stopper).

------
deforciant
As a backend developer I find flutter great. Recently created an app that uses
Go compiled with gomobile as a backend for flutter UI. Widgets are great, Dart
lang is easy to learn and understand :)

------
sandGorgon
I really wish that this was in Kotlin - a truly beautiful language which only
won because of the community and not because of a large commercial enterprise.

Kotlin Native is already doing great.

If Flutter was in Kotlin, I'm willing to bet that it's adoption would be 100x
of what it is right now. In addition, it gives devs a safe migration path from
android to fuchsia.

~~~
pjmlp
Fuchsia is developed in Dart.

Where is Kotlin Native doing great?

Right now I wouldn't consider it for anything serious.

EDIT: Regarding Fuchsia, I only mean user space apps. The other layers are a
mix of Rust, Go and C++ (C leftovers seem to be being migrated to C++).

~~~
bsimpson
> Fuchsia is developed in Dart.

I don't believe that's strictly true. Different parts of Fuchsia use different
technologies. Flutter is (as far as I remember) the only UI framework for
Fuchsia right now, so UI on Fuchsia is written in it (which uses Dart).

~~~
pjmlp
I mean the userspace apps.

If Google plays an Android/Android Things on Fuchsia there won't be much use
of C++ for app developers.

------
bitL
Why should I use this instead of:

\- React Native

\- Vue.js + Cordova

\- Scala + JavaFX

\- Kotlin Native

\- (whatever I missed here)

?

I am in a mood to learn another language and framework; how would you persuade
me to pick this one instead of alternatives?

~~~
monyr75
Pretty well covered here: [https://hackernoon.com/whats-revolutionary-about-
flutter-946...](https://hackernoon.com/whats-revolutionary-about-
flutter-946915b09514)

~~~
peternicky
Can you provide a summary of the convincing arguments from that article, in 1
or two sentences? I plan to read it myself, but I think the parent comment is
relevant.

~~~
niutech
From the article:

\- The advantages of reactive views, with no JavaScript bridge

\- Fast, smooth, and predictable; code compiles AOT to native (ARM) code

\- The developer has full control over the widgets and layout

\- Comes with beautiful, customizable widgets

\- Great developer tools, with amazing hot reload

\- More performant, more compatibility, more fun

------
cwyers
This feels like the Tennessee Valley Authority but for Dart. Just send people
out there digging ditches in Dart to keep Dart's makers employed.

~~~
ctvo
I laughed. Dart's low adoption but continued support by Google is
programming's biggest mystery.

~~~
Harimwakairi
It's also a clear counterexample to the idea that Google always abandons
projects.

~~~
moocowtruck
its coming don't worry

------
losvedir
My biggest hangup with a little project I wrote in React Native was using
device storage. I didn't want my app to interact with APIs (which RN seems
good at), and just wanted a little local DB. The whole `create-reactive-
native-app` flow was pretty good up until I needed to have a local DB at which
point I'd need to eject it and use various libraries in each of the ecosystems
(or realm, I think).

What's the story with Flutter in that regard? Is there a nice cross-platform
local DB interface that it provides? That would be a killer feature for me, if
so.

~~~
boundlessdreamz
Looks like it has sqlite support -
[https://pub.dartlang.org/packages/sqflite](https://pub.dartlang.org/packages/sqflite)

------
deeg
How does Flutter fit in with PWAs? From a high level they both seem to do the
same thing: cross-platform mobile application platforms.

~~~
jrs95
I'd imagine it's mostly a performance thing. It also seems like Google is
aiming to use this to help get more apps on Fuchsia as well. It may end up
becoming the preferred method of making new apps on Android.

~~~
deeg
That would seem to indicate that--at least from Google's view--PWAs are a
dead-end solution. I guess I can stop going through the PWA tutorials.

~~~
solarkraft
To me it indicates that they still differentiate between web and native -
which I find reasonable, at least in performance terms.

PWAs will likely further rise in popularity and be very practical for good
cross-platform support and ease of delivery - Flutter won't change that in the
short term. In the long term, maybe it will.

------
akritrime
I just discovered flutter today and made this post[0]. Good to see a beta
release, pitching the alpha version of something to use in production is kinda
difficult.

[0][https://news.ycombinator.com/item?id=16472139](https://news.ycombinator.com/item?id=16472139)

------
zitterbewegung
So they ported dart to be used on mobile with a mobile app toolkit? It looks
like the system is similar to react native but it uses dart instead of
javascript and also compiles to native code. I wish you could use javascript
because I really don't want to learn dart. I also don't really trust Google
supporting yet another framework very long either. I wish they had a sample
mobile app instead of just a video on the main page.

~~~
thom_nic
> I really don't want to learn dart

Literally half of programmers: "Ugh why can't everything be Javascript" Other
half of programmers: "Ugh Javascript is the worst language in existence" /s

Given that javascript (esp on mobile) has a hard time reaching native
performance, they presumably chose Dart because its design makes it immensely
easier to target native iOS and Android without drastically augmenting JS to
the point where it's no longer JS.

If there's a non-JS language that's easy to learn for a JS programmer, Dart
(and I guess, TS) are it.

~~~
zitterbewegung
Sorry I didn't articulate my issue with Dart. The issue was not that I don't
want to learn something that isn't javascript. The issue is that I don't want
to learn a programming language who's only backer is Google. If dart had
adoption outside of Google then I would have more incentive to learn it. So
far it only looks like its used for internal google projects.

------
hencoappel
This is good news. Hopefully it will gain more traction once it becomes
stable.

------
seanalltogether
You will never convince me that laying out UI elements in code is better then
building out an object graph in something like xml. UI views are just
containers inside containers inside containers, and following complex nesting
chains through code declarations is a nightmare.

~~~
wmleler
The killer feature of building UI elements in code is that you can build up
more complex widgets from simpler ones using composition. Flutter does this
everywhere, which makes it super easy to modify or customize any widget, or to
reuse widgets to build a new one.

You mention following complex nesting chains through code declarations. I
understand what you are talking about, but the (awesome) Flutter tooling now
has two views that make this far easier: the Widget Inspector, which lets you
see and modify the widget tree at runtime (there was a talk on this at
DartConf), and the new Outline view (just released a few days ago), which
helps you play with the widget declarations in your code.

See [https://flutter.io/inspector/](https://flutter.io/inspector/) and
[https://groups.google.com/forum/#!topic/flutter-
dev/lKtTQ-45...](https://groups.google.com/forum/#!topic/flutter-
dev/lKtTQ-45kc4) (for the outline view)

~~~
pjmlp
> The killer feature of building UI elements in code is that you can build up
> more complex widgets from simpler ones using composition.

You can do this in XAML since 2006, and JSP since 2004.

~~~
whowouldathunk
Not sure why you're being downvoted. XAML definitely supports complex widget
composition in markup. Since the XML is basically just describing an object
graph, it's a more concise way of writing the equivalent imperative code:

    
    
        <Button>
            <StackPanel>
                <Image/>
                <TextBlock/>
    
        ...
    
        <Button>
            <Canvas>
                <Ellipse/>
    

although the Dart syntax makes this look similar, albeit a little more
verbose, if you squint.

Full disclosure: I work at Microsoft.

------
piotrkubisa
I am really glad Flutter came out as beta and finally ReactNative got a good
competitor, so maybe it will encourage both sides to improve itself and polish
various (annoying) edges.

------
TheMagicHorsey
I hope Google puts some effort towards building an easy way for developers to
access maps through flutter. Right now the story doesn't seem very good.

Another place that seems lacking is photo/camera access.

Maps and Camera access are really table stakes for any cross-platform
framework at this point. Many app concepts need location/maps and media
access.

------
TeeWEE
This is the future of mobile development, and of googles new operating system
Fuchsia, that will be replacing Chrome and Android on the long term.

The architecture of Flutter is superior to that of non-reactive based
frameworks like Cocoa and Android widgets.

Try flutter, try the apps, and you will know why.

Note: This is all guess work.

------
mixmastamyk
This reminds me of my experiences with Kivy and Cordova, etc.

The achilles heel of these projects are always vendor and community support if
you want to build anything more than toys. Do they have the endurance to go
the distance?

------
bschwindHN
I need to write a mobile app for iOS and Android which uses Bluetooth Low
Energy and talks to an MQTT server. Would Flutter be a good choice to make a
prototype for such an app?

------
dropspace
I made a small project with Flutter and found it intuitive and simple. Far
more so than react native, and the end result is far nicer.

------
tiuPapa
Why flutter? what problem does it solve better than the existing solutions?
Also, why dart? Why not Go or Kotlin?

Edit: Hmm, since I am getting downvoted, can someone please say what am I
doing wrong here? Thanks. :D

~~~
wmleler
There's an article that answers your question --
[https://hackernoon.com/whats-revolutionary-about-
flutter-946...](https://hackernoon.com/whats-revolutionary-about-
flutter-946915b09514)

~~~
tiuPapa
That was a good article, thanks.

------
brainyz
Does it have any advantages over React Native?

~~~
lenkite
AOT compiled to native code that uses the native instruction set - no
interpreter/vm involved.

Uses custom rendering engine based on Skia.

Can write UX just once for all platforms if you don't mind fixing the widget
set.

Custom widgets work on all supported platforms.

Can in theory be ported to Desktops also, assuming someone writes flutter
engine bindings for Win/MacOS/Linux. If this occurs, then you will truly have
a modern, cross-XP, write-once-run-anywhere, compile-to-pure-binary, reactive
UX framework

~~~
cwyers
What "theory" keeps React Native from being ported to desktops?

~~~
lenkite
React Native is already ported to desktops but you need to write N times for N
platforms. In flutter, you can write just once after choosing a widget set,
assuming you don't mind the same widgets everywhere.

~~~
cwyers
So it's like Xamarin -- there's UI for iOS, UI for Windows, UI for Android,
but you can also use "Xamarin Forms" and have a similar appearance everywhere.
But there's nothing stopping there from being a "React Forms" or whatever that
does the same thing, is there?

~~~
pknopf
> being a "React Forms" or whatever that does the same thing, is there?

Nothing stopping it, nope. I'm surprised there isn't something currently.

That said, it isn't so bad using different render functions for different
platforms. The state management and event handling should be 100% consistent.

Besides, going all in on a single render engine limits you to creating special
"holes" to utilize controls native to the platform. Im not sure if flutter
supports this, but I doubt it.

~~~
piaste
> Nothing stopping it, nope. I'm surprised there isn't something currently.

There is - ironically, by the owners of Xamarin:

[https://microsoft.github.io/reactxp/](https://microsoft.github.io/reactxp/)

Hadn't heard of it practically at all since the initial announcement. It seems
it's a _very_ small team:
[https://github.com/Microsoft/reactxp/pulse](https://github.com/Microsoft/reactxp/pulse)

------
AhmadIbrahim
Does flutter support RTL languages?

------
philippz
Does it work with AngularJS1?

------
alfonsodev
how do you access native frameworks like AVFundation? is there any example?

~~~
Harimwakairi
How-to: [https://flutter.io/platform-channels/](https://flutter.io/platform-
channels/)

Tons of real world examples:
[https://github.com/flutter/plugins](https://github.com/flutter/plugins)

------
polskibus
Can this work with typescript somehow?

~~~
weego
No it's Dart, you'd have to transpile which would turn it into a bit of a
clownshow unfortunately

~~~
polskibus
How about typedart? j/k.

I really wish there was a way to pass type information into JS VM so that code
could be optimized better.

------
mishurov
>High-velocity

>Hamilton

------
childintime
Hey Google! Your Android IDE (full of feature taxes) is pulling this down! Did
you forget Dart doesn't need a compiler, so there is no immediate use for an
IDE? Please remove it from your setup and we'll talk!

~~~
d2p
If you want something lighter for Flutter, you can use VS Code with the Dart
Code extension:

[https://marketplace.visualstudio.com/items?itemName=Dart-
Cod...](https://marketplace.visualstudio.com/items?itemName=Dart-Code.dart-
code)

(Disclaimer: I'm the author of the Dart Code plugin)

------
ibdf
I thought dart was dead... like buried way down dead. Has dart improved? Are
they eventually going to kill Android only dev?

------
myth_drannon
So what about Kotlin? I thought Google supported it as a first class citizen
for Android development. And now that it looks like Kotlin is more popular
than React-Native for mobile development, they add Dart2/Flutter.

~~~
pjmlp
Dart/Flutter was already presented at Google IO 2017, and is how Fuchsia
userspace apps are developed.

As for yet another framework. Welcome to Google.

Android NDK alone has already been through 6 build systems, 3 public and 3
used at Google.

EDIT: 3 external were ndk-build, gradle experimental, cmake with gradle
stable. The 3 internal, looking at AOSP and other projects, ndk-build, blaze
and Soong.

~~~
moocowtruck
out of curiosity have any idea why so many build systems? just flinging
spaghetti at the wall until one is ideal? I mean I understand its good to
rewrite software every so often but 6 in the timeframe of android ndk?

~~~
pjmlp
Some of them are internal mind you, things like Soong are only on the AOSP
source code.

[https://android.googlesource.com/platform/build/soong/](https://android.googlesource.com/platform/build/soong/)

As for why, I guess reasons.

------
reacharavindh
Unable to read the page on my phone.

iOS 10 / Safari / Private mode.

~~~
rrdharan
Works fine for me in iOS 11 / Safari / Private mode.

