21 ms·
Flutter for Linux
- armytricks 6y agoHaving used Flutter extensively since I was first introduced to it 9 months ago, I can say that it is an absolute joy to use and build interfaces with. An easier way to install the Flutter SDK on linux is only good news and I hope it gets more developers to adopt it.
- programmarchy 6y agoAgree, Flutter is top notch. I've had trouble pitching it as a technical solution, though. For one, I think word is out that Google will kill projects mercilessly, and there's an odd dynamic between the promotion Flutter and Kotlin/AndroidX. Generally, Kotlin comes out on top as the "safer" choice. It's a shame, though, because the primary advantage I see with Flutter is its superior UI framework. It's leagues better than the AndroidX compatibility lasagna, in terms of architecture and DX. So it really stands out as a cross platform solution not just across iOS and Android, but especially across the Android ecosystem itself.
- deleted 6y ago[deleted]
- reddotX 6y agoflutter on Ubuntu 20.04 https://www.youtube.com/watch?v=MnXKtwKNAB4 https://www.youtube.com/watch?v=MnXKtwKNAB4 flutter create flutter run done
- avilesj 6y agoI'm excited to have another contender on multi platform apps space but in the case of Flutter for desktop I just wonder about the RAM consumption compared to Electron.
- programmarchy 6y agoDart compiles to native machine code, so unlike Electron doesn't need to host an interpreter, which tends to aggressively allocate memory. Should be much friendlier on RAM.
- oaiey 6y agoMicrosoft really has to speed up the Xamarin.Forms / Maui development. The omission of Linux is a really a pity.
- jayd16 6y agoThey said they'll have a preview by the end of the year. I'm excited to see it but I'd rather they do it right instead of right now.
- CSharpRon 6y agoTIL about Maui. From my light researching, it looks like any Linux implementation of Maui will be community-led instead of Microsoft led like the Windows and MacOS implementations. https://github.com/dotnet/maui https://github.com/dotnet/maui
- deleted 6y ago[deleted]
- ryuukk_ 6y agoMAUI sucks, it is xamarin bis, uses 654654 different renderers, uses C# and compiles with a JIT, enjoy your 100mb MINIMUM apps, even for hello world
- langitbiru 6y agoTheir project, React Native for Desktop, also omits Linux. https://microsoft.github.io/react-native-windows/ https://microsoft.github.io/react-native-windows/
- oaiey 6y agoWell, here the vendor of a platform supports a framework. They are not the framework owner there (like they are for Xamarin, .NET, ...).
- eklavya 6y agoI am so excited about flutter ecosystem. Hopefully linux gets first class beautiful native apps now. I also hope against hope that qt is officially supported as a backend so KDE is not left out.
- RivieraKid 6y agoI wouldn't call Material UI on the desktop beautiful. Mac OS is beautiful. Gnome 2 too relative to other Linux DEs. It won't use Qt but Skia.
- andrepd 6y agoJudging by the example in TFA, we must have very different conceptions of what "beautiful" means. That is an atrocious application. * Ungodly amounts of whitespace (seriously, look at that sidebar, look at that search bar. WHY? too much optimisation for what "looks good on a screenshot", maybe?) * Undecipherable symbols where there's plenty of f#cking space to write labels god damn it * I bet bad/nonexistant keyboard support (remember alt-* to navigate menus?) * Ugly to look at (subjective)
- Spivak 6y agoYou do know that none of that is really do do with Flutter, right? Like you're just taking it out on the designers of Flock.
- ocdtrekkie 6y agoThis isn't true: Google preloads their design conceptions, namely Material, into Flutter at the ground level, and Material is a terrible set of UI patterns, such as the ones the parent comment was complaining about.
- satvikpendem 6y agoYou don't have to use the material design stuff, you can just make your own components, all custom, just as you would on the web. Just replace MaterialApp with WidgetsApp at the root of the application tree.
- olingern 6y agoI haven’t dug into this, but I wonder what compatibility this will have with window managers, like i3
- l3s2d 6y agoJust tested on sway, it draws the title bar, but otherwise seems to work.
- knotty66 6y agoI've just tested on regular i3 (no Sway). Works pretty well until you start moving or resizing the window but once I did it crashed the app a couple of times. I also couldn't start the app fullscreen on a 4K display - it just displayed a small black rectangle. Other than that it felt fast and smooth. It is an alpha though, so I thought it was promising nonetheless.
- colesantiago 6y agoWhat is the off chance that Google will drop Flutter?
- cxr 6y agoIf the Vala folks and Gnome in general could be convinced to drop Vala in favor Dart, or move valac in the direction of accepting a language that looks like (a subset or a complex supersubset of) Dart, it could be an effective hedge against Google pulling out. It would also be an instance of Gnome and the various commercial vendors who rely on it being ahead of the curve—particularly for mobile, while proprietary vendors are still left dealing with the legacy of Android, Dalvik, and Java.
- dathinab 6y ago> Gnome in general could be convinced to drop Vala in favor Dart I would be very surprised if that happens. The last time I checked it seems that if anything changes then that bit-by-bit some components get replaced with new ones written in rust. Also I honestly would be very surprised if Gnome would move from gtk-based UI to a flutter based UI interface. I mean besides political reasons the amount of rework you would have to do is probably in a degree which makes it unpractical. And in context of libre5 and some other developments there was a lot of effort to make gtk-based UI ready to be used with handheld devices.
- pjmlp 6y agoGnome is already adopting Rust, and GJS has been the Vala alternative for ages, so no luck for Dart. Also Gnome has had multiple language bindings since the early days, most of them have more use across Gnome apps than Vala.
- deleted 6y ago[deleted]
- cxr 6y ago> Gnome is already adopting Rust That's not accurate. There are some Gnome contributors opting for Rust. Gnome is not adopting Rust.
- me551ah 6y agoThe future of cross platform desktop development looks bright. Microsoft is coming up with .NET 6 and Google has flutter. I just hope that these frameworks can replace bulky electron apps.
- k__ 6y agoRevery also looks nice. I wish they had more funding, tho. I find Reason/OCaml more compelling than Dart.
- sly010 6y agoHow is OCaml's multithreading story? Google says it's basically GIL-ed.
- blandflakes 6y agoSimultaneously in a state of having-been vaporware and making real progress towards being merged to master: https://discuss.ocaml.org/t/multicore-ocaml-june-2020/6047 https://discuss.ocaml.org/t/multicore-ocaml-june-2020/6047
- wishinghand 6y agoWhat's GIL-ed?
- thomasfortes 6y agoThere's a guy that managed to compile and run revery on android, I would love to have that as an option since I'm already familiar with ocaml/reason and only barely literate in Dart (and also prefer functional languages over object oriented ones)... https://github.com/EduardoRFS/reason-mobile https://github.com/EduardoRFS/reason-mobile
- k__ 6y agoPretty cool! They have mobile platforms on their roadmap for quite some time now, but somehow the project doesn't seem to get much traction. I guess, Dart would be dead by now, if it wasn't for Google pushing it with Flutter.
- awill 6y agoGoogle needs to release desktop apps in Flutter (Youtube Music, Chat, Meet etc..). a Webapp is fine for occasional use, but Google Chat can't compete with Slack without a real app.
- spankalee 6y agoTotally. You definitely can't compete against Slack's desktop app with web technologies: https://slack.engineering/building-hybrid-applications-with-electron-dc67686de5fb https://slack.engineering/building-hybrid-applications-with-...
- dahfizz 6y agoPersonally I can't tell the difference between the slack app and slack open in my browser. It is literally identical. In Firefox, I can even go "full screen" but still control the size and location of the window, so I don't have to look at the tab bar. Side by side, I can't tell them apart visually or functionally. Maybe the Linux version of electron is neutered in some way? I read article you linked and I don't know what bouncing the dock means, maybe that's an important native feature for mac users?
- jeffbee 6y agoSlack in the browser is visibly superior to the slack app. When I close the tab it's really dead. Great feature. The slack "app" is just their web site and a web browser zipped together in such a way that it doesn't actually quit when you tell it to quit. Why anyone wants that I cannot begin to imagine.
- skratlo 6y agoYay, Macromedia Flash for desktop is here, made in Google, Dart instead of ActionScript, wow, just wow.
- yjftsjthsd-h 6y agoI assume that this is meant as a criticism, but Flash was quite good at easy-to-make portable graphical apps; they had massive security issues and some lack of polish, but there's a reason why Flash dominated its era. (Also, "Macromedia Flash for desktop" was already a thing, no?) So yeah, "Flash but modern and safe" would be a pretty strong selling point.
- Apocryphon 6y agoThere was just a thread bemoaning the lost art of Flash games last week: https://news.ycombinator.com/item?id=23705174 https://news.ycombinator.com/item?id=23705174
- snodnipper 6y agoFlash remains the most productive UI development environment I have had over the past twenty years. Getting graphical apps working on all major platforms is a fabulous achievement by the Flutter folks. I have no love for what Android has become and where Kotlin is going. The web today feels like a PDF...huge amounts of movement but not necessarily progress. I hope more than anything that Flutter continues to gain traction. To my mind it is perfectly reasonable for next generation tech to write to the canvas with the latest widgets as long as there is good accessibility support.
- akie 6y agoYou're not wrong.
- Spivak 6y agoI think they're mostly wrong. I think we put too much stock into the default UI toolkits on each platform since this really isn't much different than how GTK and QT work. They have their own rendering engines and have to draw all their widgets from scratch just like this. The only difference is that GTK and QT are blessed. I think there's a case to be made for sticking to the defaults for consistency's sake but Flutter is just as native as any other UI toolkit on Linux.
- axegon_ 6y agoI'm actually a great fan of flutter and imo it is the best cross-platform solution out there. Probably except for web: though it produces very good result performance-wise, the end result is never really "web" and doesn't act like traditional web. As for desktop applications(whether it be windows, linux or mac), it seems like it's too mobile-oriented. I see great potential for simple solutions like self-service operations where you need a basic UI and it would be great if it could easily target platforms like raspberry pi (arm processors running Linux). But at the moment, while possible, it is a very painful thing to tackle and I wouldn't rely on something like that for an end product. I would assume that this is why google is working on fuchsia but way too few devices are supported. And neither of them is cheap(which is what could be a game changer, going back to the raspberry pi).
- mikece 6y agoFlutter's ability to "compile to web" was something that confused me at first as well, but on second thought it's genius. It makes it easier to ease managers into selecting Flutter since deployments and updates are done via a web browser. If that works for them then maybe there's never a need to go fully native though that option exists if they want to -- and the ability to go back to compiling for web gives managers a sense of "this isn't a one-way, I'm screwed if something goes wrong" journey.
- anonms-coward 6y ago> and the ability to go back to compiling for web gives managers a sense of "this isn't a one-way, I'm screwed if something goes wrong" journey It wouldn't be a good idea to believe that though. Flutter website are just canvas paintings, and have nothing to do with the web. You can't add new html or js to it easily. can't make much use of new improvements in the web world. Most importantly, if you are running a business, flutter web isn't really accessible, so please don't use it for any non internal tools
- kiratp 6y agoOr internal tools. Internal tools should not exclude people needing accessibility features.
- sgt 6y agoDoes this work well on RPi 4?
- thomascgalvin 6y agoDoes Flutter have a native HTML widget yet? It didn't when I first started poking around with Flutter, and a quick Google doesn't reveal anything first-party.
- mnazim 6y agoA number of packages provide webview, which can be used to render html pages.
- ellsthrow 6y agoThese still aren't "production" ready yet though unfortunately e.g. they don't currently support keyboard input
- grizzles 6y agoWebView is such a core component. In the interests of completeness, Flutter.dev really ought to bundle an android-like webview component in the core libs. It really breaks the WORA value prop if you need to if-elif your way around platform specific impls.
- realusername 6y agoYou do have Webviews but it's stil in an alpha state right now, they have poor keyboard support, no multiple tab support and are not available on anything else than Android & iOS.
- CSharpRon 6y agoGreat news for sure. There's a React Native application that I am maintaining; it's not too complex but I would love to give a rewrite a try with Flutter and see how it does on Ubuntu.
- harikb 6y agoI have a request for all the Flutter folks/fans - it would be great if you all can say something about how you can get over / stay sane with the staircase looking nesting of code blocks and how you manage to keep it all in your head to navigate the code base. I started my career writing single threaded Palm OS apps (64k limit) - there was like 10 possible widgets with 5 possible events on each widget and rest of it was application code. Mobile app development is a different beast now. Yes, I sound like old-man-yelling-at-cloud. Is this table-stakes for all UI and App development?
- Lionga 6y agoYou just don't throw everything in a big build method, but make small functions for every logical unit instead. Simple, easy, clean and maintainable.
- heavyset_go 6y ago> it would be great if you all can say something about how you can get over / stay sane with the staircase looking nesting of code blocks and how you manage to keep it all in your head to navigate the code base. The same way you would in any other code base, with the ample use of names and modules, and breaking nested components and logic into their own classes and functions. The problem is that it requires discipline, or at least a standard style guide, to adhere to. It's similar to JavaScript in that regard, where bad practices can seemingly be ignored or even encouraged.
- runeks 6y agoI gotta say that I miss some from of let-binding, so I don't have to choose between (a) local variables plus newline-separated statements, including "return", wrapped in {}, and (b) the lovely syntax of `Widget build = (context) => ...`. E.g. instead of writing Widget helloWidget(BuildContext context) { final db = Provider.of<MyDatabase>(context, listen: false); return Row( children: <Widget>[ Text("Hello, "), FutureBuilder<String>( future: db.username, builder: (ctx, snapshot) => snapshot.hasData ? Text(snapshot.data) : CircularProgressIndicator(), ), ] ); } i'd like to write: Widget helloWidget = (BuildContext context) => let db = Provider.of<MyDatabase>(context, listen: false) in Row( children: <Widget>[ Text("Hello, "), FutureBuilder<String>( future: db.username, builder: (ctx, snapshot) => snapshot.hasData ? Text(snapshot.data) : CircularProgressIndicator(), ), ] );
- heavyset_go 6y agoHaving recently chosen a Qt stack for cross-platform desktop development over Electron, I'm happy to see that Flutter is now a real contender in this space. I'm curious about Flutter and Dart bindings and calling interfaces for other languages. If you can integrate a Flutter front end with a back end language of your choice, that would change a lot of things for the better. The only reactive UI offerings for cross-platform desktop development with multiple language bindings are QML, which is great, or Electron with React, which is not so great if you want to use anything but JavaScript for your back end.
- fungos 6y agoFlutter: yay! Snap: nope! Anyway, hopefully this will cause a push for flutter support on other distros that are snap free.
- Andrex 6y agoI'm still excited because when Canonical backtracks on Snap in a few years (like they seem to always do when trying to push some homegrown aspect of Linux), their Flutter work will still be there and will have seen years of improvements.
- jaekash 6y agoThat seems like it would be great, except for that it would still be Canonical's work and with everything they do it would probably be better for everyone if they did not bother.
- Andrex 6y agoThat's not true, their upstream work for Gnome shell after ditching Unity is very appreciated. Their announcement also pointedly remarks that the Flutter work will benefit "most distributions" of Linux. That's another good sign that this work won't be too tied up in Canonical's fiefdom.
- timsneath 6y agoIt's worth noting that Ubuntu support and Snap support are orthogonal. The Flutter work here generates standard ELF binaries that can be distributed outside of Snap, and Canonical's contributions to create a high-quality desktop embedder for Linux are applicable across all distros.
- jaekash 6y ago> Canonical ... high-quality LOL!!!! no but really Canonical is a crap factory, let's not pretend otherwise.
- mixmastamyk 6y agoGood to see. I've been wanting to use Flutter for a Linux-based appliance but it still needed a lot of work on that front until recently. If there was a bittorrent library in Dart as well I'd be off to the races. Up until this time I've been using Kivy for the application, but it has a ton of issues and doesn't seem to receive much investment or support, even if you wave money around.
- rst 6y agoSo, this makes Flutter apps available through Canonical's Snap store... which is Ubuntu-mostly right now, and controversial enough that the top item on the HN front page as I write is about an Ubuntu derivative (Linux Mint) explicitly dropping support for it. https://news.ycombinator.com/item?id=23771847 https://news.ycombinator.com/item?id=23771847
- topspin 6y ago"Canonical's Snap store" Correction: it's "the app store for Linux". /s
- chupasaurus 6y agoShow me any repo of snaps other than Snapcraft.
- topspin 6y agoNo. And I can't imagine what relevance that would have. If Linux has an "app store" it's Docker Hub. But "Linux" doesn't actually have an app store, and attempting to claim that status is tone-deaf hubris.
- canada_dry 6y agoUntil SNAP gives me full control (and not just: you can opt-out) over updates/upgrades they're a non-starter.
- lallysingh 6y agoDoes snap not let you manually do those?
- ric2b 6y agoNo, it updates by itself, sort of like Windows 10.
- 6y ago
- topspin 6y agoInteresting that Flutter "Desktop support" exists for macOS and Linux, but not Windows.
- kjksf 6y agoIt does exist for Windows (i.e. I compiled and ran Flutter app on Windows). It's just slightly behind macOS and Linux in maturity. In general desktop support is "early alpha" quality. I'm hoping that in a year or two Flutter will be a solid option for mac/linux/windows desktop apps. For now we have to accept that it's an alpha quality software.
- Dowwie 6y agosee the flutter-rust ffi: https://github.com/brickpop/flutter-rust-ffi https://github.com/brickpop/flutter-rust-ffi Is anyone considering writing flutter + rust desktop apps in linux?
- haolez 6y agoFor my usage, Flutter is a no-go for web development for the same reason as Qt: it's just a canvas, so text selection, accessibility, etc doesn't work nicely or at all.
- paulcarroty 6y agoGood news, but all depends how much Google interested in Linux desktop support in Flutter. I'm highly skeptical due to their "hyper activity" in Linux desktop niche.
- etse 6y agoWhat are some high quality non-Material, non-Cupertino themes that any Flutter (mobile) developers can recommend? Material is well done, except I really don't like the actual design. Cupertino looks more like iOS 7 than iOS 14 and lacks something…
- kelnos 6y ago> Canonical is making it very easy for application developers to publish their apps for Linux users via the Snap Store, the app store for Linux. Ugh. No, Canonical, no matter how much you'd like it to be, the Snap Store is not, and will never be, "the app store for Linux". The last thing the Linux community wants or needs is a closed-source[0], walled-garden approach to distributing applications. [0] For the pedants out there: yes, you can create Snaps with open tools, but the only Snap server implementation is closed.
- amelius 6y agoWouldn't it be possible to install Flutter with the usual ./configure; make?
- hexo 6y agoFrom the screenshots and gifs over there I can tell that someone is again forcing people to look at 1) animations 2) grey fonts instead of black and they are even bragging about it being beautiful. These also tend to enormously waste screen space. Are especially those two things configurable by user? I mean - there has to be no animations at all (why does anyone insist on animating theme change? that is just ridiculous), and black text, not grey. If not, that is complete deal breaker. Please tell me I'm wrong and one can configure everything there. Single word: accessibility. More words: normal accessibility without needing to re-set whole system to be "accessible" just because one app developer can't behave.
- solarkraft 6y agoNon-animated changed are offensive to me. Humans are built to track moving things, not a thing instantly disappearing at one point and another, similar looking thing instantly appearing at another place, with no context telling you whether it's actually the same object. This gets worse the larger the state change is. Similarly information overload is an issue, but of course too little information is as well. That's on the designers, though, you can certainly build information dense apps with Flutter if you want to. From what I can tell there seems to be a platform multiplier for animations to enable slow motion mode (an important tool for developing good transitions), which I suppose you could just set to 0. And if it doesn't it's just on the developer again. Basically: I won't deny that it can certainly influence decisions (actually I think it's an important thing to consider), but ultimately it's not really the plattform's fault if a developer decides to make an app you don't like.
- hexo 6y agoYes, animations really influence decisions. Mainly about using the particular piece of software at all (animations are no go for me and a lot of other people). Some folks do not have the luxury to spend hundreds of miliseconds to seconds each time they do some action (and believe me or not, they do A LOT of actions per day). Some people are actually using computers to do stuff as fast as possible so they have fast computers. Having fast computer doesnt automatically mean someone is willing to spend those resources on some eye candy. Stuff moving around actually increases information overload as it adds to state one needs to track (moving object). To some folks this this even causes problems from medical reasons. When it comes to information density, this should actually be up to user as well (lets call it compact mode for example) but at least to me it is not as critical as movements. Best would be being able to set "margin sizes" or something like that. And even that should be completely trivial given that no one should really write fixed-widget-position applications these days (i havent done so in ages, i'm using vertical/horizontal containers and spacers). As should be application color theme as we are/were used to for a loooong time. But I understand that it isn't something Windows users are aware of, since each and every program there forces you to look at completely different interface that behaves in other way and has other ux logic. I do think we can both agree that being able to stop all and every animation (including fading and whatever else in this category) is very important for user inclusion and accessibility. And since (as you said) slowing those down is needed for their development, "disabling" that feature should already be trivial. It just has to be available to user. Otherwise it's just an arrogant negligence and showing over-supremacy by "i know better what you like to look at".
- g5becks 6y agoReally wish Dart was more useful for server development. There’s a lot of missing packages that no one seems to be interested in writing right now though.
- mleonhard 6y agoThat's normal for Google APIs. Only interesting stuff gets done. Boring problems stick around forever, wasting millions of user engineer hours. Examples: - Chain.capture() not working in tests https://github.com/dart-lang/stack_trace/issues/50 https://github.com/dart-lang/stack_trace/issues/50 - Document exceptions thrown https://github.com/dart-lang/http/issues/245 https://github.com/dart-lang/http/issues/245 - It's difficult to find content using normal browser find https://github.com/dart-lang/dartdoc/issues/2131 https://github.com/dart-lang/dartdoc/issues/2131 - SecurityContext.setTrustedCertificatesBytes fails with BAD_PKCS12_DATA https://github.com/flutter/flutter/issues/39190 https://github.com/flutter/flutter/issues/39190 - Add remote port information to Socket errors (2013!) https://github.com/dart-lang/sdk/issues/12693 https://github.com/dart-lang/sdk/issues/12693 - setTrustedCertificates doesn't work. Causes HandshakeException all the time https://github.com/dart-lang/sdk/issues/35462 https://github.com/dart-lang/sdk/issues/35462 - badCertificateCallback is called with issuer certificate instead of leaf certificate for LetsEncrypt published certificate https://github.com/dart-lang/sdk/issues/39425 https://github.com/dart-lang/sdk/issues/39425 - No way to preload Image from assets before first builder (needed for smooth splash screen with images) https://github.com/flutter/flutter/issues/26127 https://github.com/flutter/flutter/issues/26127 - Provide function to get the current system timezone name https://github.com/dart-lang/sdk/issues/21758 https://github.com/dart-lang/sdk/issues/21758 - Create an easy and consistent Exception base class https://github.com/dart-lang/sdk/issues/2909 https://github.com/dart-lang/sdk/issues/2909 - Google please provide a Location module https://github.com/flutter/flutter/issues/31453 https://github.com/flutter/flutter/issues/31453 - Widgets inserted in MaterialApp Navigator Overlay don't get theme https://github.com/flutter/flutter/issues/39379 https://github.com/flutter/flutter/issues/39379 - [firebase_messaging] PHONE_REGISTRATION_ERROR on Android API 18 with Google APIs https://github.com/FirebaseExtended/flutterfire/issues/1471 https://github.com/FirebaseExtended/flutterfire/issues/1471 - Use layer style for colors in Design Kit for Sketch https://github.com/material-components/material-components/issues/74 https://github.com/material-components/material-components/i...
- Rapzid 6y agoWhat's the story for extending a flutter application dynamically? Is it possible to write and load plugins for them?
- ZeroCool2u 6y agoI'm a huge fan of Flutter for a number of reasons, but I just tried the demo app Flokk and it doesn't work at all on vanilla Ubuntu 20.04 running Wayland. They actually had this working over a year ago on desktop, not sure how such a massive regression like this made it through.
- deleted 6y ago[deleted]