22 ms·
Google's cross-platform Flutter UI toolkit goes 1.0
- bluetidepro 8y agoCongrats 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?
- fredgrott 8y agosomeone did a performance test on android react vs flutter vs native app see https://robots.thoughtbot.com/examining-performance-differences-between-native-flutter-and-react-native-mobile-development https://robots.thoughtbot.com/examining-performance-differen...
- bitpush 8y agoThe original study fell short on rigor and the author posted an updated version here - https://robots.thoughtbot.com/examining-performance-differences-between-native-flutter-and-react-native-mobile-development-take-two https://robots.thoughtbot.com/examining-performance-differen...
- pvinis 8y agoI'm guessing most answers will be about Dart being the hard pill to swallow for most, and the fact that it render by drawing UI instead of orchestrating like React Native. I still prefer RN, and I don't my opinion changing in the future. I prefer controlling a native view for the apps I make. Maybe a game would be easier with Flutter?
- mikece 8y agoDart compiles to native ARM binary; a colleague of mine who uses C++ for cross-platform mobile development made a demo app in Flutter, decompiled it, and said it looked like what his C++ apps produced. The JavaScript in your React Native apps won't perform as fast.
- abraham 8y agoIf you have any experience with TypeScript, Dart isn't that different.
- dvlsg 8y agoLooks like dart even uses an event loop. Their examples for handling futures look very, very similar to Javascript (and typescript, of course). https://webdev.dartlang.org/articles/performance/event-loop#darts-event-loop-and-queues https://webdev.dartlang.org/articles/performance/event-loop#...
- mikece 8y agoComparison: 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 8y agoThe 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 8y agoI’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.
- deleted 8y ago[deleted]
- k__ 8y agoParts of React-Native are also written in C++, btw.
- forgot-my-pw 8y agoReflectly rewrote their app from RN to Flutter: https://medium.com/reflectly-engineering/reflectly-from-react-native-to-flutter-2e3dffced2ea https://medium.com/reflectly-engineering/reflectly-from-reac...
- bsimpson 8y agoFlutter 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-portable-ui-toolkit.html https://developers.googleblog.com/2018/12/flutter-10-googles... [edit]: Sorry, bluetidepro - this was supposed to be a reply to you.
- pier25 8y ago> like a game engine In this aspect it's very similar to Flash or QT.
- basch 8y agoor canvas or kodi (which has been improved now to not refresh the entire screen.)
- hbhakhra 8y agoThey just addressed this in today's announcement: As for new Flutter features, Google today announced ‘Add to App,’ a new feature that makes it easier for developers to slowly add Flutter code to existing apps. In its early days, Flutter’s focus was squarely on building new apps from scratch, but as it has grown in popularity, developers now want to use it for parts of their existing applications as they modernize them.
- rohan1024 8y agoLive stream at https://youtu.be/NQ5HVyqg1Qc https://youtu.be/NQ5HVyqg1Qc
- pedrokost 8y agoHow 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?
- CraftThatBlock 8y agoThere's a first party Google Maps plugin, and there's a few BLE plugins, which work pretty well (using flutter_blue in production right now)
- rohan1024 8y agoThey 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.
- mixmastamyk 8y agoWould like to use it for a Linux app. Looking forward to when that has first class support.
- mikece 8y agoThe 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 8y agoIt does currently work on Linux, although fairly barebones. You can Google "Fluttet desktop"
- snaky 8y agoThat's interesting considering Linux on mobile.
- deleted 8y ago[deleted]
- mikece 8y agoGoogle 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?
- CraftThatBlock 8y agoGoogle rarely kill open source projects.
- bsimpson 8y agoIf 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/
- pjmlp 8y agoMeanwhile they are adding Fuchsia support to ART, so go figure.
- on_and_off 8y agoYou 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 8y agoThat's just a senior dev retention project.
- wpdev_63 8y agoCan you target web with it?
- McKayDavis 8y agoThey previewed Project Hummingbird to do just that: https://techcrunch.com/2018/12/04/googles-flutter-toolkit-goes-beyond-mobile-with-project-hummingbird/ https://techcrunch.com/2018/12/04/googles-flutter-toolkit-go...
- hknd 8y agoDamn - 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-image-0.png https://techcrunch.com/wp-content/uploads/2018/12/pasted-ima...
- yorkstool 8y agoPretty sure that's the Nord theme(https://github.com/arcticicestudio/nord-visual-studio-code https://github.com/arcticicestudio/nord-visual-studio-code).
- hamaluik 8y agoPerhaps paired with https://marketplace.visualstudio.com/items?itemName=CoenraadS.bracket-pair-colorizer https://marketplace.visualstudio.com/items?itemName=Coenraad... ?
- ohitsdom 8y agoThe terminal theme looks similar to agnoster: https://github.com/robbyrussell/oh-my-zsh/wiki/Themes#agnoster https://github.com/robbyrussell/oh-my-zsh/wiki/Themes#agnost...
- qwerty456127 8y agoLooks 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.
- Apocryphon 8y agoThey literally just previewed Hummingbird.
- vvilliam0 8y agoiOS, Android, and Fuscia. I just found out that there is now Hummingbird for web as well.
- neolefty 8y agoDoes Fuchsia use the Material renderer, like Android?
- cmrdporcupine 8y agoThere is an embedder engine API that can be used for other platforms.
- pier25 8y agoThey just announced desktop and web support
- qwerty456127 8y agoCool! Where can I find an example project to start with if I want to build an app for Linux and Mac as primary targets?
- swsieber 8y agoDesktop is in the works: https://medium.com/flutter-community/flutter-on-desktop-a-real-competitor-to-electron-4f049ea6b061 https://medium.com/flutter-community/flutter-on-desktop-a-re...
- scotchio 8y agoFlutter 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 8y ago"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 8y agoDart (the lang used in Flutter) already failed to gain traction in the web dev community and nobody seems to be maintaining it there.
- thosakwe 8y ago> nobody seems to be maintaining it there That's factually incorrect. Development of Dart for the Web has never stopped. AngularDart is still officially supported, and under active development.
- nailer 8y agoNobody in the community. Context is key.
- sudhirj 8y agoFlutter is Dart's killer app, and don't think it's unmaintained. Dart 2.0 came out pretty recently with some much needed improvements, probably driven by Flutter.
- parvenu74 8y agoThe 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 8y agoThere'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-for-the-web-e687c2a023a8 https://medium.com/flutter-io/hummingbird-building-flutter-f...
- malkia 8y agoHoly smokes! That's awesome! (I was aware of the desktop embedding, but also on the web... that's really cool)
- yjbanov 8y agoWebAssembly compilation is a little orthogonal to getting the framework and rendering system up and running. We do not have to wait for WebAssembly to make progress on the UI side of things. Having said that, when WebAssembly is available for us to try, we certainly will.
- garysahota93 8y agoThis looks really cool! Could someone explain the difference between Kotlin and Flutter given that they are both being pushed for app development now?
- ForHackernews 8y agoI 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 8y agoAhhh. That makes sense! Thank you. I was scratching my head about it, but I guess I just need to read more now.
- asien 8y agoGoogle 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.
- bpicolo 8y ago> Flutter doesn’t actually run the Dart VM, it uses AOT and compile to native code. That's the whole point - you can't compile JS to fast native code. It also does use the DartVM for hot-reloading development cycles.
- tabs_masterrace 8y agoI'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 8y agoOr Swift
- andbberger 8y agoFlutter 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 8y agohttps://pub.dartlang.org/packages/fft https://pub.dartlang.org/packages/fft
- andbberger 8y agoYeah 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 8y agoI disagree. Something rarely needed like FFT should not be included in any stdlib. Keeping it out too allows better control and more frequent releases.
- rhodysurf 8y agoFlutters 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.
- pjmlp 8y agoThe first time I experimented something like that was in Smalltalk/V. Followed later by the Oberon OS. Eiffel also offered a similar experience with their MELT VM and compilation to native code via C code generation.
- Reedx 8y agoHaven'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.
- dman 8y agoAny news on if the desktop embeddings will become a supported part of Flutter?
- allenbrunson 8y agoin 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 8y agoI 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 8y agoios 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.
- pjmlp 8y agoUnless they force Flutter upon Android devs, I will let it pass, not eager to learn Dart.
- thosakwe 8y agoIt'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 8y agoTheir 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 8y agoThen 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 8y agoBecause 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 8y ago
- pzo 8y agoWriting 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/platform_channel/lib/main.dart https://github.com/flutter/flutter/blob/master/examples/plat... 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.
- sebe 8y agoThey have started a "Dart FFI project" https://gist.github.com/mraleph/2582b57737711da40262fad71215d62e https://gist.github.com/mraleph/2582b57737711da40262fad71215...
- izacus 8y ago> 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.
- rapsey 8y ago> On mobile? Qt really isn't pleasant or usable on mobile. What's wrong with it?
- wootie512 8y agoI 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 8y agoI 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.
- rhodysurf 8y agoThose are still the not fun parts to work with in Android, although its better now kotlin extensions so you no longer have to refer to the XML directly to manipulate views. Flutter doesn't use any of that, you just code and thats pretty much it. No XML or anything, and you can use VSCode which is a lot lighter than android studio.
- kllrnohj 8y ago> 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 8y ago
- pritambarhate 8y agoOne 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.
- pritambarhate 8y agoHere is the list of issues with current implementation of "platform views": https://github.com/flutter/flutter/labels/a%3A%20platform-views https://github.com/flutter/flutter/labels/a%3A%20platform-vi...
- matt2000 8y agoI think this is one of the things they announced today, search for "Platform Views": https://developers.googleblog.com/2018/12/flutter-10-googles-portable-ui-toolkit.html https://developers.googleblog.com/2018/12/flutter-10-googles...
- parvenu74 8y agoGoogle Developers' Blog has just posted an announcement on Flutter 1.0: https://developers.googleblog.com/2018/12/flutter-10-googles-portable-ui-toolkit.html https://developers.googleblog.com/2018/12/flutter-10-googles...
- jmull 8y agoCross-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 8y ago>- 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).
- dazhbog 8y agoHow does flutter handle BLE/WiFi communication to hardware, rendering graphs, NFC, device sensors? Any comments on the experience? Do you recommend it?
- sudhirj 8y agoDon'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).
- dkobia 8y agoI'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.
- weberc2 8y agoWould love to see something like this extended to the Linux desktop.
- forgot-my-pw 8y agohttps://github.com/google/flutter-desktop-embedding/ https://github.com/google/flutter-desktop-embedding/
- vially 8y agoThis 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
- zmix 8y agoMeh, 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.
- shrewduser 8y agogoogle 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.
- sebasfiorent 8y agoLooks nice. I find it similar to Adobe AIR but with DART as programming language.
- jazoom 8y agoExcept Adobe Air doesn't compile to native and the apps don't run until you nag the user to download the Air runtime.
- pjmlp 8y agoI guess someone is very outdated on their information. https://www.adobe.com/devnet/air/articles/aot-or-interpreter.html https://www.adobe.com/devnet/air/articles/aot-or-interpreter... Air supports native compilation since 2012!
- jazoom 8y agoI'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.
- zwetan 8y agoNo it does not work like that. To be able to publish on iOS, there Adobe AIR compile to native binary. On Android, Windows, and macOS (also Linux) it does not to do that (eg. it is fast enough), so instead you have the choice to publish an app that need the AIR runtime, OR to publish a captive runtime (it bundle inside the app). In general, most dev use captive runtime and so you don't need the AIR runtime installed first. Now, keeping a runtime bundled vs compiling to native have numerous advantages, for ex you can make part of your app dynamically updatable without re-installing the whole app. Technically Adobe have the tech in the AIR SDK to compile to any native target, they just use it for iOS.
- deleted 8y ago[deleted]
- thrownaway954 8y agoLike 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.
- snaky 8y agoThey won't stop pushing Dart, thanks to success of Go, yet another 'good enough for the job' mediocre (at best) language.
- dreamer7 8y agoI'm curious to know your thoughts on what makes Dart a mediocre language. At first glance, it seems to be merging the best of both worlds (can be AOT compiled for prod and JIT for dev)
- bpye 8y agoI would kinda even prefer Go. Learning Dart is really specific to Flutter, I wouldn't end up using it for anything else. Go is kinda useful. I have played with Flutter before and liked it, but was annoyed about the lack of what are now called PlatformViews. I might give it another shot now. I just wish I could consume it from a different language, Go, TypeScript.... C# even Kotlin. I don't love learning a language for a single purpose if I can help it.
- deweller 8y agoHere'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-eric-seidel/ https://softwareengineeringdaily.com/2018/07/09/flutter-with...
- szemet 8y agoI 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
- brailsafe 8y agoSeemed 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?
- matchbok 8y agoDOA. 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 8y agoLess space than a Nomad.
- SeanFerree 8y agoAwesome article! Enjoyed the read
- saagarjha 8y ago> 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 8y ago> 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 8y agoNot 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.
- ryanbertrand 8y agoI’m building my first RN app right now and I feel like the navigation animations are native (modals, etc). (I’ve been doing native iOS since 2009)
- guix992 8y agoI 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.
- forgot-my-pw 8y agoSo you're asking all the OS vendors to get together and implement a universal UI toolkit? Good luck with that.
- projektfu 8y agoIt's hard to get a single OS vendor to implement a universal UI toolkit on their own OS. Thankfully, Apple standardized around Cocoa/ObjC. Microsoft keeps proliferating new, incompatible ways to approach application development. Linux has multiple incompatible toolkits pretty much by design.
- Hemospectrum 8y agoIt'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.
- ystrdytmrrw 8y agoNothing will make me learn or do Dart.
- k__ 8y agoWell, you're lucky. There is React-Native (JS/TS), Xamarin (C#) and Boden (C++)
- Gonzih 8y agoI 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!
- baybal2 8y agoI'm surprised to see them showing Taobao app there. I know it is done in Weex, without anything like Flutter.
- habosa 8y agoLook 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 8y agoI 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 8y agohttps://flutter.io/docs/resources/faq#why-did-flutter-choose-to-use-dart https://flutter.io/docs/resources/faq#why-did-flutter-choose... "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
- dep_b 8y agoI 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 8y agoDart 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 8y ago> 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.
- sleepinseattle 8y agoMicrosoft supports C++ and pre-compiled C# for Windows UI development too. As a UI dev, I'd much prefer the hot-reloading that you get from Flutter, React Native, and web UI development though. But I still care about battery life and global warming so it can be hard to justify the flashy new stuff for most the UI development I do, which is mostly just list views. I'm also weary of the post-mortem debugging experience for these higher level frameworks. C++ is nice for this given that usually the OS and UI frameworks are implemented in it too, at least on Windows. Disclosure: I work at Microsoft.
- amelius 8y agoIt's sad that this thought had to cross my mind, but how long until Apple prohibits or penalizes the use of this toolkit?
- saagarjha 8y agoWhy would they? I don't see any guidelines it violates, other than the loose suggestion to have your app be reasonably designed.
- amelius 8y ago> 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 8y agoIf 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.
- holografix 8y agoWhy 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 8y agoFlutter is supposed to be much faster than React Native because of Skia engine and its GPU acceleration and AOT compilation.
- holografix 8y agoWhat’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?
- thefounder 8y agoWhat about a WASM powered UI kit? Wouldn't that finally fix the cross language issue?
- saagarjha 8y agoNot really, no. It's very difficult to bridge different platform UI paradigms with just a language layer.
- hardwaresofton 8y agoIf 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-nativescript-to-execute-javascript-on-background-threads https://www.nativescript.org/blog/using-workers-in-nativescr... [2]: https://api.dartlang.org/stable/2.0.0/dart-isolate/Isolate-class.html https://api.dartlang.org/stable/2.0.0/dart-isolate/Isolate-c...
- arendtio 8y agoFor 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
- convery 8y agoFor people that have used Flutter to make any app: how much memory is used at runtime?
- deleted 8y ago[deleted]
- nstart 8y agoDoes 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 8y agoflutter'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)
- ichekrygin 8y agoLooks great!
- zahidislm 8y agoHaving 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.
- Andrex 8y agoPlatform 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-portable-ui-toolkit.html https://developers.googleblog.com/2018/12/flutter-10-googles...
- riantogo 8y agoDoes Flutter have easy modules for standard things like login, comments, payments etc. or does that involve writing separate server side code?
- Andrex 8y agoCombined with Firebase, yes, that's fairly easy to setup. https://firebaseopensource.com/projects/flutter/plugins/ https://firebaseopensource.com/projects/flutter/plugins/
- locusm 8y agoHow does Flutter go with mapping apps, location etc? is there good integration or SDK's?
- bschwindHN 8y agoDoes flutter have an official bluetooth/BLE library? I would have expected that to be in place before a 1.0 release.
- ledriveby 8y agoOh man, if this could get things like Signal Desktop off of Electron, I would be so happy...
- KAKAN 8y agoI'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.
- ryanbertrand 8y agoDoes this allow hot code-push updates like React Native does?
- tobiaswk 8y agoI'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.carwingsflutter https://play.google.com/store/apps/details?id=dk.kjeldsen.ca... https://itunes.apple.com/us/app/my-leaf-for-nissan-leaf/id1436701776 https://itunes.apple.com/us/app/my-leaf-for-nissan-leaf/id14... 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.
- techsin101 8y agoFlutter needs jsx / xml like declarative support
- techsin101 8y agoFlutter needs to add support for xml styled declarations and Swift
- ssijak 8y agoNo it does not!
- jimmierwilliams 8y agoIt 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