48 ms·
Flutter desktop shells
- evilhn1 7y agohn is shit. Google should block it from its search result
- deforciant 7y agogreat news :) Flutter/Dart was a joy for me to code in. As a backend engineer I could pretty much skip all nonsense and just build a simple Android/iOS app in a matter of days. I didn't even have to use Android Studio, built and deploy my app straight from the terminal via CLI. I have looked at multiple different solutions how to hack flutter to run on desktop but didn't want to invest my time in them as they would probably crash in weird scenarios. This will make things so much easier! modern tooling + no electron = win for both developers and users.
- giornogiovanna 7y agoThat's incredible. Flutter seems to have a modern API, a great, customizable look, and a growing ecosystem. My only concern is, what are the executable sizes and performance like?
- iosonofuturista 7y agoI have been coding mobile apps for a while, both native, with react native, and now I'm doing a flutter app. Can't say much about this desktop targets, but on the mobile side, in terms of size and performance, they are much closer to native than react.
- rohan1024 7y agoIn debug mode the app can be around 25MBs but in release mode the same app can be around 5MBs
- yc-kraln 7y agoI really want to like Flutter, but I someone really don't want to spend the time to learn Dart. I can't really quantify it--some mix of yet-another Proprietary Google Technology, yet another ecosystem, yet another X. I'm tired I just want to build stuff that solves problems.
- axaxs 7y agoYou could say the same about Objective C, and to a lesser extent Swift. While I respect your opinion, and somewhat agree on it being a weird choice to use Dart, I think there is value in learning it iff it becomes the ubiquitous way to write apps for mobile.
- pjmlp 7y agoObjective-C and Swift help sell Apple's hardware. Besides Ad Words, there is very little being sold by Dart.
- axaxs 7y agoHow so? Do you think apple sales would drop if they switched all development to using a more mainstream language?
- pjmlp 7y agoNaturally, who would port their apps without a monetary value behind it? Plus how much money would it cost to replace all the existing software stack?
- IshKebab 7y agoBesides the thing that provides nearly all of Google's income...
- nova22033 7y agoyet-another Proprietary Google Technology Dart is open source: https://github.com/dart-lang https://github.com/dart-lang It took me two minutes to find that using googles real proprietary technology..their search.
- jasim 7y agoI want to link to Revery - a native, cross-platform GUI library written in Reason/OCaml. It brings React's view=function(state) model to native applications, along with CSS box model and Flexbox. It has the developer ergonomics of Electron, but without the need for its heavy runtime. It is still under development and I'm looking forward to playing with it next time I try writing a GUI app. https://github.com/revery-ui/revery https://github.com/revery-ui/revery
- frou_dh 7y agoAll these projects are trashing the accepted meaning of "native" GUIs. If it's not using, for example, Cocoa controls on macOS, then how is it native GUI?
- deleted 7y ago[deleted]
- s_y_n_t_a_x 7y agoIf Revery makes use of react-native-macos like ReactXP does, it does infact use Cocoa controls, unlike Flutter.
- frou_dh 7y ago> Revery is like flutter in that it does not use native widgets. This means more work for us, but also that we have more predictable functionality cross-platform!
- richardwhiuk 7y agoThat's a bad thing. Your apps are more predictable to developers between platforms, but less predictable to users. A user expects all apps on their computer to behave the same. If you bring your own widgets, you violate that convention.
- bryanphe 7y ago"Native" is actually overloaded in the era of hybrid web apps - there are two pivots: - Native code - does the GUI framework compile to machine code? - Native widgets - does the GUI framework use platform widgets, or a platform agnostic layer? In the context of Revery, we used "native" to mean "native code", ie, "compiles to machine code" - and further clarify in the README. It's important for us to make this differentiation - because often people look at the framework and assume its JavaScript. Do you have a suggestion on how to clarify this? Note that, if you're interested in using the platform UI - there's a project called Brisk (https://github.com/briskml/brisk https://github.com/briskml/brisk) that is very similar to Revery, but uses platform UI frameworks (Cocoa/Win32/etc).
- jaabe 7y agoCool! Does flutter do web apps/frontends yet? I think when/if it does it’ll be really interesting for small tech teams in non-tech businesses. I work in a municipality and we simply can’t keep up with different frontend stacks for web, mobile and desktops or even the pace of which modern JS framework versions become obsolete.
- sudhirj 7y agoIt's been announced, but don't think it's ready yet. https://medium.com/flutter-io/hummingbird-building-flutter-for-the-web-e687c2a023a8 https://medium.com/flutter-io/hummingbird-building-flutter-f...
- nsriv 7y agoI think this is the real killer feature of Flutter, and something I'm waiting for as well. They are implementing it with their Project Hummingbird, but the process is a bit opaque at the moment.
- markdog12 7y agoThey're working on it: https://medium.com/flutter-io/hummingbird-building-flutter-for-the-web-e687c2a023a8 https://medium.com/flutter-io/hummingbird-building-flutter-f...
- bitcoinofficial 7y agoAngularDart does all the frontend stuff.
- Lionga 7y agoRumours are they will open up / publish their web / html5 export (called hummingbird) at the next Google IO
- 0xDEEPFAC 7y agoAnyone, is this yet another electron-based thing? I can't really tell from the readme...
- s_y_n_t_a_x 7y agoIt doesn't use a browser to draw the UI, it draws it itself. It's not native UI controls though, they're emulated UI controls.
- 0xDEEPFAC 7y agoOk, still miles better in terms of performance I am sure then. Thanks!
- ralusek 7y agoHave you used a good electron application, like VSCode or Figma?
- 0xDEEPFAC 7y agoUnfortunatly, not one that doesn't render my netbook unusable. The old QT version of Skype was OK until microsoft killed it - the new one is a hog
- 0xffff2 7y agoWhile VSCode is great in a lot of ways, it does not have good performance. What is has is adequate performance and great extension support. It regularly stutters quite badly on my beefy Dell Precision when running on the integrated GPU. I use it as my daily driver, but its performance pales in comparison to something like Sublime.
- ralusek 7y agoHave to compare to eclipse/intellij/webstorm rather than sublime.
- deleted 7y ago[deleted]
- abalone 7y agoI just checked out a couple of Flutter’s showcase apps on iOS. The scrolling in the Hamilton app was atrociously stuttery, just really broken. This is on an iPhone X. Then I opened it again and it was fine. Seems like it was doing some initialization work that was blocking the main thread. Not sure if it’s Flutter’s fault but I never see broken scrolling like that on native apps. The other app I tried was some journaling app. Both of them used unconventional UI. Are there any good examples of native performing and looking Flutter apps? EDIT: Apparently somebody downvoted this? What’s up with that?
- yunyu 7y agoiOS perf on Flutter has been broken for a while: https://github.com/flutter/flutter/issues/813 https://github.com/flutter/flutter/issues/813 https://github.com/flutter/flutter/issues/28113 https://github.com/flutter/flutter/issues/28113 I wish the team would prioritize this more, but I guess that's Google for you.
- Bahamut 7y agoNon-charitably, Google probably has an interest in not prioritizing iOS. Realistically, I'd imagine that Google prioritizes less there because a lot of preference for iOS dev is to just go full native. I do wonder how much Flutter is used by Google for iOS apps though then.
- StreamBright 7y agoThen they can stop claiming real cross platform solution. To be hones this is exactly the reason I am sceptical to use any of their projects. I never seen something like that from other companies who produce engineering tools like Flutter for example.
- danbalthasar 7y agoFull disclosure: I'm a Flutter team member who has focused specifically on iOS development. There are a number of us dedicated to this on the team internally at Google. It's definitely a priority. Each platform has its own challenges though, and there's a very wide variety of issues that can arise that are platform specific. The more feedback we can get about what people want to do that isn't working, the more we can address it :)
- wootie512 7y agoI have been a full time Android dev for past 5 years, and have really grown to dislike the work. UI development takes up so much of my time. And usually the fix ends up being some small attribute that only has an effect when combining X and Y UI parts. Had the chance to do some Flutter work, and really enjoyed it. Could knock out the UI and later modify it with ease. Spent most of my time focusing on app logic, and not tons of UI work. Happy Flutter is spreading elsewhere, I will try this out and spend some time looking into Hummingbird also.
- H1Supreme 7y agoAre you using the ConstraintLayout? Previously, I would have agreed with you. But, I've found the ConstraintLayout to be pretty fantastic when developing UI's.
- pojntfx 7y agoWe already have something like this. It's called the web.
- robmccoll 7y agoYes, but on a desktop, running a web app as a native application is tolerable, not great. On mobile, it's frequently a performance and battery problem and interacting with native APIs is hit or miss. This comment is similar to someone seeing the web stack used to build an application and saying "We already have something like this. It's called Win32 or Cocoa or GTK+ or Qt or writing directly to a frame buffer ..." Different technologies for customer demands, timelines, teams...
- nilsocket 7y agoModern browsers are heavy, each tab takes nearly 50MiB of memory where as native applications may take 2-10 MiB. But it does work on all platforms. One more issue is usability, since os desktop environments, doesn't support web-apps. One needs to pack it with electron or something similar to it. Which increases your application size and memory usage.
- gardaani 7y agoThey are still using OpenGL on Mac. Apple has deprecated OpenGL. I'd definitely wait until the Flutter team has replaced the OpenGL dependency with Apple's Metal. (I really hope they will do it.)
- dvdgsng 7y agoDoes Apple not support Vulkan?
- dman 7y agoNope.
- mtgx 7y agoUnfortunately, no. They use the proprietary Metal API, but there are some middleware that convert Metal to Vulkan, I think sponsored by Valve.
- dnicoli 7y agoNo, they only support Metal, but there is MoltenVK: https://github.com/KhronosGroup/MoltenVK https://github.com/KhronosGroup/MoltenVK
- fermentation 7y agoSurely gl will continue to live on for quite some time on apple’s stuff, considering it is pretty much a lingua franca
- kllrnohj 7y agoYou can poke through this bug https://github.com/flutter/flutter/issues/18208 https://github.com/flutter/flutter/issues/18208 and the referenced skia bugs. There's a Metal backend in the works already, but if you really for some reason refuse to use OpenGL even though it works fine Skia's Vulkan backend works fine and MoltenVK exists now. But deprecated just means "start moving off of this please" not "it's already broken"
- romanovcode 7y agoI don't know about this. 5000+ issues is not very reassuring regarding this project.
- theDoug 7y agoNah. The number of issues on any project is not an indication of project quality but community activity and imagination for improvements. This is the wrong number to point to if you're trying to make this point.
- robmccoll 7y agoWe finally have an answer to "how do I write GUI apps that work on all three major desktop OSes, both major mobile OSes and the web?" that isn't just run a web browser instance per application. Nothing wrong with Javascript these days, but it's hard to get consistency and the performance just isn't there. Something that compiles AOT and renders its own controls directly through OpenGL sounds great. Technically Qt can do this, but then there's licensing and C++ and it's all just kind of heavy development-wise.
- lenkite 7y agoPlease let Dart compile to native executables on desktop OS'es
- markdog12 7y agoIt already does, and they're working on making it easier. https://github.com/dart-lang/sdk/issues/34343 https://github.com/dart-lang/sdk/issues/34343 Not sure if this will use AOT or JIT though.
- munificent 7y ago> Not sure if this will use AOT or JIT though. You can do either. You can compile a snapshot and run that on the JIT VM. This basically gives you faster startup because it doesn't have to do all the source parsing, resolution, type-checking, etc. but gives you the general runtime performance of a JIT VM (think V8 or the JVM). Or you can AoT compile your app all the way to native code. It's similar to how a shipped Go or OCaml works where it compiles your code and the language's runtime together into a single executable.
- markdog12 7y agoI was more referring what Flutter would do out of the box for desktop, but yeah, the question didn't mention Flutter. By the way, is there a good performance breakdown between Dart's AOT vs JIT? I've read some tweets/comments that JIT is still generally faster. Not including warm-up of course.
- munificent 7y agoI don't know of any good canonical references. The perf story is always changing since a lot of this back-end work is pretty new. Also, the type system changes in 2.0 are still fairly new and I'm not sure how much the back-ends take advantage of those types yet.
- wellpast 7y agoEvery so often for the past several years I'll go evaluate options for cross-platform desktop app development and I always come back with an enormous handful of options and all of which fall short on some measure. I would really think that this "problem" would have a great solution by now. But I think most of the developer attention is on web for obvious reasons (more ease, more conducive to mistakes/novices/etc). However I think there should be way more desktop apps. I hate using services and having my data all on some remote service w/ little options for privacy and safety/backup, etc. I also like the general speed of desktop apps (though I know the web is trying to pull on more desktop/os resources) and I like the way desktop apps can interact with the host OS (creative windowing/sidebar/docking/etc and utilization of system tray/menu bar/etc.) I would much rather see my needs addressed by suites of standalone/private desktop apps than by a bunch of URLs and Saas's. Interestingly, the HN zeitgeist seems to recently be turning its awares back to this topic (it seesm to me from recent HN threads). Is it? And if so, I wonder why? What's in the air now?
- lostmsu 7y agoYou should write a blog post with comparison!
- stephenhuey 7y agoHave you tried Rubymotion? It currently deploys to iOS, Android and OSX, but Amir, the new leader, is quite passionate about expanding and just deployed a popular Rubymotion app on the Nintendo Switch, so stay tuned for more platforms!
- wellpast 7y agoThis is exactly what I'm talking about. There are SOOOO many options and all of them fall short. This one falls short in the extreme. I.e, no Windows support & it seems mobile-focused not desktop-focused. Not trying to be harsh and I bet this project has cool plans. But what worries me is that there are 100s of options in this space and _all_ of them are short. Why can't the passionate community rally behind one effort, and fully solve this problem? A solution doesn't seem to need to be programming language-specific, either, so that doesn't seem to be a good reason to keep 'forking' this problem.
- ausjke 7y agoI'm going to wait a few years for this to settle down in case Google drops it like other projects, its web-component polymer project which I spent some cycles on did not take off, Angular is not in good shape these days either, and the PWA... Flutter might be just another new try. For me, React, ReactNative, Electron, even Vue, is enough for now, I can not trust Google on yet another web effort anymore, life is too short to trust a giant who behaves unpredictably sometimes.
- GeertJohan 7y agoShameless self-promotion: There's also https://hover.build https://hover.build, which builds a Go binary that runs the flutter engine to run your app. Can be used to easily deploy a Flutter app on desktop, and allows for cross platform plugins written in Go. It works, but is in early release. It is based on https://github.com/go-flutter-desktop/go-flutter https://github.com/go-flutter-desktop/go-flutter
- childintime 7y agoI tried this a couple of weeks ago, and to my surprise, it actually delivered! Except that the resulting apps didn't render quite correctly yet, so in the end I couldn't justify using it, yet. <rant> Hover probably suits my needs, but I think the Flutter engine could be separate from the app, on the desktop, as the Dart jitted VM seems to have enough performance to do so. That could fully remove the need for a toolchain for the majority of apps. Just feed it Dart, in source form. In the case of Go, a library could enable communication with such a Flutter VM through channels. The resulting executable could be much simpler, and would merely focus on extending the VM with platform features. Concretely, it shouldn't be necessary to recompile the Flutter engine, just to add serial port access, for example. Likewise, the Flutter engine could be upgraded by simply replacing the binary. The thing is, your language of choice, any, could be used to extend such an engine. Fundamentally I don't believe in monolithic apps which compile in the kitchen sink, as they don't allow me to use the best language for the task. Most languages try to be everything to everybody. Why not communicate better, between processes? Some of these processes may run on the other side of the world. That kind of stuff should be easy, so no DLL's please, instead a kind of broker. </rant>
- avinium 7y agoThis looks awesome! I don't have any pressing need to develop on the desktop right now, but if and when we do, I've bookmarked Hover.
- neves 7y agoWeird. Till other day the Web was the platform to rule them all. Who would do desktop apps in 2019? If you need a web page, and hybrid app is still best option.
- mythz 7y agoVery excited, this is the fast & productive non-electron native Desktop Apps UI I've been waiting for. Most people use Electron because most native GUI's suck as they're antiquated APIs are unproductive with slow dev/iteration times. Flutter lets you build beautiful Material Apps using a refreshingly modern Reactive UI with built-in hot reloading. Dart is like a cleaner Typed version of JavaScript, a bit more static and restrictive in someways but still really easy to pick up and learn if you have any 'C-like' language experience.
- k__ 7y agoI think Reason is a much nicer language than Dart, so if I'd need some non-native cross-platform UI, I'd use Revery. For the rest React-Native is probably the best choice right now. Using mobile optimized native UI elements saves quite a lot of battery. https://github.com/revery-ui/revery https://github.com/revery-ui/revery
- sergiotapia 7y agoHot take: Who's to say Google's plan isn't to make this become big, then purposely give iphone a shittier experience just a few ms of more jank to make android look better? Think long, long term. I wouldn't trust this.
- joshstrange 7y agoI don't know if they'd do that but Google does treat iOS users pretty shitty. Their apps are always a decent bit behind the upgrade curve. Like they didn't support the new iPhone X display for a good few months after it was released.
- sergiotapia 7y agoRight? Hard pass from me.
- jasonvorhe 7y agoIt's weird how perception differs based on the platform you're on, because me as an Android user I'm often a bit annoyed that Google seems to treat iOS a bit better by either launching earlier on iOS or taking better care of the User Experience and stability.
- Rotareti 7y agoGoogle does something similar to push Chrome over Firefox: https://news.ycombinator.com/item?id=19669586 https://news.ycombinator.com/item?id=19669586 I don't get why you are downvoted..
- sergiotapia 7y agoLots of google employees here, shame on them.
- stu_k 7y agoFlutter looked great, until I realised that they were re-implementing all the OS controls themselves. For example: https://github.com/flutter/flutter/blob/1db5d66932b873e17c8c675b3782d9c196b28499/packages/flutter/lib/src/cupertino/picker.dart#L15-L16 https://github.com/flutter/flutter/blob/1db5d66932b873e17c8c... This is the kind of thing that leads to an "uncanny valley" app, where things feel slightly off, or they look good until the OS changes something and Flutter doesn't keep up.
- deleted 7y ago[deleted]
- s_y_n_t_a_x 7y agoThat's why ReactNative is my preference. There are forks of it that target Windows and MacOS using their native controls. Microsoft maintains the Windows ReactNative fork (https://github.com/Microsoft/react-native-windows https://github.com/Microsoft/react-native-windows) and they wrap React, ReactNative, and the desktop forks in their ReactXP project. I don't trust Google to emulate a perfect UI among all platforms. I feel like they're generating too big of a workload for no reason, it's a big red flag. I think eventually they'll give up on emulating native controls and choose a unified appearance for all platforms (forcing Material design for everyone) as well as giving the option to customize. I think their endgame is to push Flutter as much as possible so they have Fuchsia developers, then let the other target platforms go unmaintained. Their language, their OS, their devices.
- xster 7y agoI'd definitely a concern and non-ideal for things that are not spec'ed out in https://developer.apple.com/design/resources/ https://developer.apple.com/design/resources/. Hopefully this is all temporary until we can build our own comparison tooling https://github.com/flutter/flutter/projects/9#column-3989168 https://github.com/flutter/flutter/projects/9#column-3989168. Disclaimer: I wrote that line :(
- netdur 7y agoIn other hand, when I build something using Flutter I know end use will look at this exact pixel on whatever (android) phone used.
- GordonS 7y agoIs it possible to work with Flutter using Typescript, or is it Dart only? It really feels like Typescript won the war to be something of a JS replacement a long time ago - I like the look of Flutter, but I really don't want to learn another language that I won't use for anything else. BTW, I realise Dart is likely similar to Typescript in many respects, and I wouldn't expect a big learning curve - but I already have enough languages under my belt and don't want anything else to add to the occasional syntax confusion I get.
- mraleph 7y ago> Is it possible to work with Flutter using Typescript, or is it Dart only? You might be thinking that Flutter underneath is using JavaScript - to which Dart compiles. However this is not how Flutter works, there is no JavaScript involved anywhere in the stack. Dart is its own language - and it can run natively, unlike TypeScript - which is just a type system over JavaScript and needs to be compiled to JavaScript to actually run. So no, you can't use TypeScript with Flutter.
- shalabhc 7y agoRandom Dart question - how is the standalone Dart VM implemented? What is it written in, is there a bytecode, etc? And is there a place where more details are available?
- mraleph 7y agoDart VM is written primarily in C++. There is bytecode, but the story here is kinda complicated - there are actually 2 different versions: one is called DBC and is used during development of Flutter applications on iOS, there is another called KBC - that one is more like a classical bytecode, it is currently in development. > And is there a place where more details are available? You can get some high level information at https://mrale.ph/dartvm https://mrale.ph/dartvm Let me know if you want to know something special.
- markdog12 7y ago
- MarkMc 7y agoMost users prefer an app over the web on mobile. If installing apps on desktop can become as painless as on mobile, perhaps users will also prefer an app over the web on desktop? Maybe then we can let browsers just render documents and stop trying to shoehorn apps into HTML/CSS/DOM.
- whytaka 7y agoI'd be much more interested in Flutter if the styling could be made wholly separate like CSS. I thought we all agreed inline-CSS is bad.
- gaara87 7y agoComing from a decade of app development experience. Both iOS and android have the capability of inlining styles as well as abstracting it into reusable bits. Flutter certainly supports it very well
- qwerty456127 7y ago> Work is ongoing to extend Flutter to support desktop as a target environment, allowing developers to create macOS, Windows, and Linux applications with Flutter. OMG I wait for this so much... Finally a modern, high-level, really cross-platform JavaScript-free GUI framework...
- ____Sash---701_ 7y agoCurrently using dart and flutter full time, some c++ background. Can say that the docs are really well written and an addition to have native desktop is just another plus. Dart itself is very familiar to c++ and feels quite natural.
- StavrosK 7y agoI'm a web developer, but I would like to learn Flutter. However, I haven't found a good resource to get started with. Everything seems to assume that you're a mobile developer already, except for a few very basic tutorials, which only half-assume that. Does anyone know of something that will take you from zero mobile knowledge to building some simple apps?
- nerder92 7y agoI found flutter very fascinating. I recently start a small side-project with a friend and it's truly fun. Dart is pretty smooth most of the time (except the TypeSystem which is a bit weird, IMHO). This idea of `Flutter all the things` anyway is pretty ambitious even for Google, but for some specific use case might be a good solution especially for kickstarting prototypes on different platforms in order to validate the market as fast as possible. This are my 2 cents.