Hacker News new | past | comments | ask | show | jobs | submit | page 2 login
Flutter 3 (flutter.dev)
604 points by tosh on May 11, 2022 | hide | past | favorite | 437 comments



I like and use Flutter myself, I recommend others use it as well if you see other comments in my profile, but one thing that annoys me is that it feels as if the major updates are coming too fast, in a way. As in, they say things like Flutter Web are now "stable" but if you actually use them, you'll find that they are clearly not stable. Windows was mentioned to be stable in the last release, but it too has issues. I am now wary of just how "stable" these macOS and Linux versions really are.

I think the marketing is getting ahead of the actual development of the framework. If parts are truly not stable, why call them stable, if not for wanting Flutter to be in the news cycle every so often?


The Linux version is bad too.


People are talking about a better developer experience, but hardly anyone is talking about the user experience with apps built with this tech.

I don't feel it's great, especially on older devices. Take google pay, a showcase flutter app. It's a laggy mess on an iPhone SE 2016, whereas the "old" google pay ran perfectly fine. On top of that, many google apps I use these days will just freeze and stop accepting touch inputs. I have no idea if it's all flutter, or just the weird stuff google does on mobile platforms, but other apps don't suffer from this.

I think flutter is good for a resource-scarce team trying to create mobile apps for multiple platforms, but otherwise it creates an inferior end product compared to a native app (let's please not get into the definition of "native", for iOS and Android you know what I mean). For google, who has enormous developer resources, I'm not sure why they would ever use it themselves unless it's for apps they don't care about.

https://flutter.dev/showcase/google-pay


I'd just like to chip in with my (opposite) experience:

I semi-recently developed an app using Flutter and used an iPhone 6, a 6s, and my old Redmi Note 5 as a baseline for performance testing. While I'll admit I wasn't doing anything particularly graphics heavy (at most: sliding modals and some animations), I wasn't able to get things to dip under 60fps on either platform.

As for the GPay app, the only performance issue I could notice from testing just now was a dropped frame while quickly scrolling through the "explore" page. Otherwise it works perfectly on my Z Flip 3.

On the other hand - have you considered upgrading devices? I always hate whipping out the iPhone 6s (same A9 CPU as your SE) because it runs like hot garbage in most cases... a recurring theme in the iOS space.


> I semi-recently developed an app using Flutter and used an iPhone 6, a 6s, and my old Redmi Note 5 as a baseline for performance testing. While I'll admit I wasn't doing anything particularly graphics heavy (at most: sliding modals and some animations), I wasn't able to get things to dip under 60fps on either platform.

I think that's great if you're testing for performance on older phones! Many of them are still quite capable devices. I suspect google isn't doing much of this.

> As for the GPay app, the only performance issue I could notice from testing just now was a dropped frame while quickly scrolling through the "explore" page. Otherwise it works perfectly on my Z Flip 3.

That's a pretty modern phone, right? Have you tried it on your 6 or 6S?

> On the other hand - have you considered upgrading devices? I always hate whipping out the iPhone 6s (same A9 CPU as your SE) because it runs like hot garbage in most cases... a recurring theme in the iOS space.

I haven't, because I think the OG SE is one of the best phones ever made. And I'm not a phone power user in the sense that I'm gaming on it, or doing lots of graphically intensive things. I just replaced the battery on it after using it for 5 years, and it runs everything I want to do perfectly...with the exception of google pay and some of google's other apps.

The issue I have with these basic CRUD apps running with tons of jank is that they're essentially just a UI with some text labels and buttons. For google pay, I want to open it up, navigate a list of people, select one, enter a number, and press "Pay". A computer from the 80s could do this no problem, it's not a graphically or computationally demanding thing. Certainly a computer from 2016 (iPhone SE) is up to the task, and before the google pay transition to flutter, it totally was.

Creating this software that runs slower, with no tangible end-user benefits, is simply pushing us towards more e-waste as people upgrade their devices unnecessarily.


Is this really Flutter's fault or is it Google's?

Google doesn't even support its own devices from 2016, so I doubt they'd optimize their apps for the iPhone SE 2016.


Its equally bad on Google's flagship Pixel 6 Pro. There are three tabs in the gPay app and its about 2FPS as it animates between the tabs. Scrolling is janky.


Keeping the baseline/core running smooth and efficient helps every device and every app, so they don't need to optimize for iphone se 2016 per se.


Googler, opinions are my own.

Interesting thread from a year ago may interest you: https://news.ycombinator.com/item?id=26333973 (it's a flutter lead talking about Google pay).

I'd be interested to know how much the team tests with an iphone that old.


I find Google’s iOS apps to be thoroughly mediocre and frustrating to use, whether they’re Flutter or not. They just don’t behave like iOS apps.

It’s even worse when you’re in a less common set up, like using an iPad with a keyboard case. I can’t even use the arrow keys to move between search results in the YouTube app.

I know most people don’t care, but it’s the endless little details that make me thoroughly dislike cross-platform toolkits.


I was hoping to see better HTML rendering. Using a single canvas to render web apps was my one turn off. Flutter is the right choice for many apps, but not for apps primarily accessed over the Web.


It is not production ready for web and I don't have much hope it ever will be. I love it for mobile, even desktop apps. But I feel they chose the wrong direction at the beginning for web and it's just trying to dig back out of that hole since then.


Couldn't they just embed Chrome, like Electron did?


For desktop and mobile, Flutter renders over OpenGL, why do they need to embed chrome ?

The websites that are exported from Flutter use the HTML canvas (used for games, animation, etc) instead of trying to generate HTML. This means accessibility and SEO are on existent for those sites. GP is complaining about this.


IMO it's most useful for more compute intensive web apps like an image editor.


What’s wrong with using a single canvas? It can be faster. Google Docs and Figma, for example, use canvas rendering


Although it may render faster, it comes at a cost, as it completely circumvents what browsers are good at.

Flutter is basically just painting pixels on a canvas manually, meaning no CSS, no text selection, no text wrapping, no responsive elements, no elements without JS enabled. Many accessibility tools rely on CSS and text in HTML in order to work too.

It's a huge trade-off to make, and something to be aware of.


Heavy emphasis on HUGE tradeoff. Too much for most web apps, IMO.


I just checked and Google Docs is not a single canvas. It uses a canvas for the text but all the tools and so on are good old html.



> What’s wrong with using a single canvas

You can't even select and copy text. And canvas is inaccessible to screen readers


FYI there is a SelectableText widget included in Flutter[1] but the developer has to explicitly make text selectable just like iOS and just like Android apps. Desktop is a different story... many text selection paradigms that I'm familiar with on desktop (like double-click and hold and drag to select whole words) simply don't work right. It's not a great experience, but neither is the vast majority of non-Flutter mobile apps when it comes to selecting text too.

wrt accessibility, Flutter does actually generate elements with aria attributes for screenreaders to consume[2]. You're right that the canvas is inaccessible, which is why the aria labels have to be generated adjacent to that.

We're using Flutter for mobile development at my workplace.

[1] https://api.flutter.dev/flutter/material/SelectableText-clas... [2] https://docs.flutter.dev/development/accessibility-and-local...


For accessibility they create a separate DOM tree just for screen readers.


This right here should tell you why you shouldn't use Flutter for Web. The Web is pretty great for accessibility out of the box until us devs mess it up, we shouldn't use a technology that needs to completely build it from scratch to get it to work.


Just as an FYI that is how the official web spec works https://wicg.github.io/aom/spec/

I'm going off of memory here but I think it's approximately correct. They were playing around with the idea for a while of creating "virtual trees" to handle accessibility and ultimately had to abandon it for privacy reasons because you would be able to imply that anyone who was using the virtual tree was differently abled and that was a whole can of worms that couldn't be resolved.


I believe the spec you link is a future proposal at the moment. And I trust a consortium of folks from a variety of browser vendors along with folks from other interests over a single product, when it comes to trying to figure out a better way to make things more accessible. And maybe Flutter can just use AOM in the future when it's available in browsers.

As of Feb, 2022:

> While still in draft form within the Web Incubator Community Group, the Accessibility Object Model (AOM) intends to incubate APIs that make it easier to express accessibility semantics and potentially allow read access to the computed accessibility tree.


Are there declarative and performant ways to synchronize a canvas with a DOM tree? Maybe the answer here is obvious but this seems like quite a bit of overhead, both for developers and the browser.


Do they need to be synchronized? I can’t imagine that a screen reader would be sensitive to millisecond-level discrepancies between canvas updates and DOM updates.


I’m not concerned about the delay between updates, it’s the correctness of the DOM and the canvas and managing interactions between the two. I might be misunderstanding the problem (or lack thereof) because I haven’t dealt with accessibility and canvas.

When it comes down to it, I have no idea how you’d indicate something is selected in the canvas and have a screen reader correctly read out the current selection from the DOM. Would DOM events communicate to the canvas how to modify state, functions to call, etc?

How would you manage focus between the canvas element and the rest of the DOM? Apologies if I’m not making sense; maybe there’s a well known pattern people use for things like this.

My understanding of accessibility relies heavily on the DOM behaving as a single document, and the idea of a sort of meta-document within it which coordinates pieces of the documents seems very complex and hard to get right.


at this point you'd better get rid of the canvas


Because it destorys native browser features. For example find-in-page, hove to see where a link goes. Right click a link to bookmark, open in private window or copy the URL. If the page has anchors I can get a link to them. If I save or print the page it is an image rather than text (with all of the above features).

Some of these can be reimplemented easily, some of them with effort, but some just aren't possible. Plus the exact behaviours depend on what browser you are using, so you can't reimplement them because you don't know how the user's browser behaves.

For games or image editors this is probably fine. But for most apps this is a huge depredation in usability.


Both Google docs and figma use canvases, but neither of them renders the whole app through a canvas.

This is easy to verify - just open up dev tools and look at the DOM structure.


Both are pretty disastrous accessibility-wise.


no canvas are slower for UIs. The difference is between immediate vs retained mode rendering, and the later is order of magnitude more energy efficiency and is more performant, for well behaving not chaotically changing content.


Canvas has accessibility issues for screen readers as well as for SEO purposes.


We have a react native app and sometimes it fails to build. We go to lunch, and come back no code change now it builds.

I'm just sick of the NPM/Javascript bullshit.

Does Flutter avoid all of these kinds of issues? I'm this close to scrapping the whole thing.


I worked with React Native for 3 years before jumping over to Flutter and this was the biggest reason why I made the switch. Its exponentially better on Flutter. The only time builds break for the team are when we made a code change that broke it. Its consistent and non-flaky (looking at you RN). Not that you won't run into the occasional issue but with React Native easily 20% of my time developing was "this just stopped working and there's no reason why". React Native was configuration hell. With Flutter, I haven't struggled with that at all past the initial setup.


This has been my experience with RN too (admittedly, a few years back). So much time wasted on troubleshooting random glitches that occur for seemingly unrelated reason. Some minor library version update? Boom, your breakpoints no longer work. Why? Noone knows. The "turn it off, turn it on" approach seems to be the go-to fix in this environment. And there's always another surprise around the corner. I can't really contrast it with Flutter, because I only toyed with it a little bit, but at least the docs were of much better quality - and this being a few years back as I said, the fact that Flutter was the newer framework (and still provided better quality at least in this area) was even more pronounced.


I never coded React Native, but I have a lot of experience with Flutter. You can definitely run into build issues, but it's almost exclusively when doing precarious things like upgrading third party packages, SDKs or Flutter versions. As soon as you've traversed the depths of dependency hell and it builds, it builds without a hitch repeatedly in my experience.

As the framework is maturing there have been some major transitions between APIs and project structure. My main app that was scaffolded two years ago has had no shortage of duct tape fixes and tweaks to especially Gradle/Cocoapods config to keep it building.

I guess it's a fair price for what has otherwise been a fantastic developer experience. All in all I'd strongly recommend it.


As someone with a lot of Flutter experience, I can second this. It usually works pretty reliably until someday you upgrade and cocoapods keeps complaining even when you clean everything and rebuild.


There is no framework that never has issues.

Flutter has its fair share (and to be fair, so do the native toolchains).


For mobile apps (not web), I think yes - Flutter solves a lot of these kinds of issues. As with any project, don't just blindly add a lot of dependencies as they may vary in quality and stability, but overall you deal with two things; Dart and Flutter, and it's quite refreshing.

Not as good as native, but if you're going to go cross platform due to various reasons such as development costs, then it's the way to go.


> I'm just sick of the NPM/Javascript bullshit.

Amen


Flutter is miles ahead of React Native at least in this regard


No, use native if you want to avoid that


Dude I'm close trust me.


It's easier. Start with iOS.


In case any Flutter engineer/PM is watching this thread, any update on when the Material 3 components will be released?

I have an iOS Flutter app that's getting pretty popular in its niche, but I'm waiting on the Material 3 components to be there to release an Android version.


For a list of what is currently available in Flutter 3, as well as a roadmap of upcoming features, see the M3 umbrella issue:

https://github.com/flutter/flutter/issues/91605

Feel free to upvote any issue that you would like to see prioritized, as it helps us with planning.


That was part of the release today I believe.


Maybe I missed it? It seems like they got some working but got a bunch on their roadmap still [0]. I just talked to someone over there and all he could say is that they're working on it.

[0] https://github.com/flutter/flutter/issues/91605


Congrats! Flutter is such an amazingly crazy concept that when I started my current job it was on the condition that I could learn and use it for our app. I'm not regretting it in the slightest. In fact I get more impressed with it the more I use it. Great job!


I still can't find, in the docs, there is an open bug/feature request to NATIVELY copy/paste from web?

Do they support copy / paste on the web app without using a special widget?


I'm not aware of any planned/possible way to do copy exactly as you would an HTML page with HTML tags, but there's a big project to make selection and copying much simpler and more powerful (design doc [1], in progress PR[2]).

With that PR it should be easy to just add one SelectionArea to the root of your app in order to make everything selectable, like it would be on a web page. You don't need SelectableText widgets. There's an example of this in the PR [3]. No built-in support for multimedia or rich text copying yet though.

Text input fields should already do copy/paste pretty much the same as native.

[1] http://flutter.dev/go/global-selection [2] https://github.com/flutter/flutter/pull/95226 [3] https://github.com/flutter/flutter/pull/95226/files#diff-a90...


Great initiative. Wondering why can't Google make this a priority and make it fast instead of focus on desktop and other device support.

Do they know that a ton of devs are not jumping in because of this one simple issue and sticking to other frameworks?


Kind of crazy all this effort is being put into just recreating something that has been around, and works fine, for 20 years. What a waste of resources.


Does Flutter have a complete Material UI components implementation? I'd prefer to use Flutter for multi-platform support over learning new Android Compose and figuring out what to do for other platforms later.


Does anything have a complete Material components implementation?

I always got the vibe from Material that it's just a bunch of designers pumping out docs for an ideal world, and then the various libraries try to implement a bunch of those things as they change faster than they can be implemented.


Indeed. It wasn't that long ago that Material components for Android finally got proper support for Material 2 in a stable release of the library. But everything started too look too nice and consistent, so now we're getting steamrolled with Material 3.


Yes, there are two default widget packages, Cupertino and Material.

https://docs.flutter.dev/development/ui/widgets/material


I'm not sure I can say it's complete but it's better than Android in my experience. There's also more built for you already, like button styles and page layouts.


It’s built right into it. Both material 2 and 3.


I have been working on a Hacker News client using Flutter, if anyone is interested:

https://github.com/Livinglist/Hacki


Thanks for sharing! The design looks really slick.

As a hobbyist Flutter developer who hasn't figured out how to make Flutter apps look remotely appealing yet, it's been cool poking around your code and trying to learn from it. Bloc and Cubit look especially interesting.


thanks! here’s another Hacker News client made with Flutter from another dev that has a much better looking UI, but it is only available on FDroid. (though you can build it yourself for iOS):

https://github.com/Mosc/Glider


On one hand, I'm excited, on the other hand, I'm using a Flutter app right now as essentially a utility for my own personal use.

I'm horrified if I upgrade it everything will break and I'll have to commit to fixing it.

Still, I'm very excited about this, I'd argue flutter is what react native wanted to be.


Not sure if you’re new to the Flutter / Dart ecosystem but one of the nice advantages that comes as a side effect of having “Google scale” backing it is how nice the upgrade experience is.

Generally you just run a single command of dart fix and it will statically analyse the code and automatically rewrite anything that’s outdated to use the latest syntax for you.

https://dart.dev/tools/dart-fix


I'll consider it, but I really really don't want to invest more time into fixing things.

Like it's essentially finished. Then again, I can always branch it and see what happens.


Shout out to the Net Ninaja's Flutter tutorial: https://youtube.com/playlist?list=PL4cUxeGkcC9jLYyp2Aoh6hcWu...

Just the best. No affiliation.


What are big and highly used apps that use Flutter?


My app[1] has 5 figure daily users (if that's considered somewhat big) and is written in Flutter.

I love Flutter. It made all this so much easier.

[1] https://stockevents.app


This is really nice for testing. It uses most of the pretend-native components I was interested in.

Right off the bat, I notice stuttering animations everywhere: Scrolling, swiping back, etc... This is on an iPhone 13.

In one section, the keyboard opened on top of a text-field so I couldn't see what I was typing.

The components are _just_ different enough that I feel something is wrong, but for the most part, I can't tell what it is.

Then there's a bunch of minor stuff. Switches become slightly larger when they change. You cant swipe down modals. You can't drag & release over options in the sheet. I feel like I'm missing buttons more often.

Overall, I get a vague cheap feel. Not so bad that I would outright dismiss the app as a customer, but I would definitely look for alternatives.

This isn't a critique of the app. I think all of these issues are flutter-related.


Just trying to be honest here, but using this as an example on my iPad Pro with magic keyboard... flutter apps do not feel great on iOS IMO. Animations have an initial low fps/jerkyness to them. Lot of weirdness when trying to use an the iPad trackpad, horizontal directions seem to be inverted. Scrolling inertia and feel just feels off in general to me. I'm sure flutter is great on Android and all but it still feels like they have a bit of work to do on iOS in order to really cross that uncanny valley gap.

Regardless I'm sure what you have is a great app here so hope you don't feel like I'm targeting you or your app directly here, and at the end of the day if flutter allows you to make your customers happy more power to you and hope it works out the best for you.


Your app looks good! I'm curious, what did you use for the charts?


My app [0] isn't big, but it's highly rated and uses Flutter

[0] https://apps.apple.com/us/app/five-three-one/id1560266240


Do you have an Android version?


Not yet. I'm waiting to use the Material 3 components which hopefully should be out soon.


Doesn't appear to based on the website, which is just sad considering it's almost zero effort to create an Android build as well. I'd consider using this app also.


I could indeed build it for Android, but since I'm using the Cupertino components, it would look and feel like an iOS app. As I said replying to the parent comment, I'm currently waiting on the Material 3 components to be available before I do that.


Sounds good, although a bit sad I can't try it out, even if it felt more iOS-like. But you gotta prioritize your app and what's best for it. Good luck!


Philips Hue is fully Flutter since a while now (v4). There were issues with (pre-rendering of) animations but those have been resolved in Flutter.


Google Home is the first thing that comes to mind.

See here: https://flutter.dev/showcase


From all those apps Google Home is the only I had to use for my Google Wifi router and it crashed a bunch of times!


It's very spotty connecting to my Chromecast as well, but the UI is cool!


Home is so buggy on my iPhone, it's strange that it's part of the showcase.


Google home is my most-hated mobile app. It’s slow, janky, buggy, and has terrible UX.


Every action requires waiting. Its so frustrating. Open the app, spinner. Click themostat, spinner. Change the temperature, spinner. Its so frustrating. I use Home Assistant now as my primary home control app.


I just noticed that. Opening the Settings menu shows a spinner! Are they downloading the list of settings items from the internet?!!


Our app probably falls into those categories. Millions of downloads between iOS and Android, and has upwards of 50 different pages.

iOS: https://apps.apple.com/us/app/tracker-network-stats/id128769... Android: https://play.google.com/store/apps/details?id=network.tracke...


They have a showcase page that details large brands that use Flutter: https://flutter.dev/showcase There's also there own website: https://itsallwidgets.com/


Canonical have specified it as the default development tool for their apps (e.g. the Ubuntu installer)


Nubank’s mobile apps are built using Flutter. They’re the largest neobank in LATAM (>50MM customers).


Google Ads uses it on mobile which is responsible for literally billions in revenue.


I believe the Sonos mobile app is Flutter.


Coming from a django/python background, flutter/dart was easier to understand than react/js. It has been fun to work with, esp. with Vscode and extensions, on a side project.

Flutter is a mature option for mobile development, esp. for small teams developing for multiple platforms.


Any plans to make it possible to embed Flutter in existing desktop applications?

Especially for use in plugins to existing said that do not control the main event loop?


as an early and aggressive adopter of Google tech it was completely infuriating to watch them announce Flutter + Firebase integration as if it was new or interesting.

that should have been working day 1. maybe day 2. flutter has been out for years, and the fact that you can’t successfully use Google software with Google’s other software is starting to be a wart they can’t excuse because of internal build chain differences.


+1 for Flutter 3 supports the Apple Silicon Mac (aka M1).

I could not get this to run on a Ubuntu VM (arm64) - anyone know if this is also working?


Works fine for me in Asahi Linux, both Flutter 2.x and after upgrading to 3.


Really using Asahi as a daily driver? Thought it didn't have video acceleration yet?


Ha nope, just occasionally playing around with it. No video acceleration, but still usable for web browsing and development. It's amusing to drag a window around and see all the CPU cores spike to 100% as they frantically pretend to be a GPU.


did they fix the scrolling on iOS?


From their What’s New: “ Flutter now supports variable refresh rate on iOS devices with ProMotion displays, including iPhone 13 Pro and iPad Pro. On these devices, Flutter apps can render at refresh rates reaching 120 hz, which were previously limited to 60 hz. This results in a smoother experience during fast animations such as scrolling. See flutter.dev/go/variable-refresh-rate for more details.”


can does not mean it will.


Not yet, but they have a beta thing that you can enable to smooth that out

> Impeller precompiles a smaller, simpler set of shaders at engine build time so that they won’t compile while an app is running; this has been a major source of jank in Flutter.


if they disable the shader jit it will result in much worse performance overall


Yet another reason to avoid cross platform frameworks. They are always catching up to the vendor’s capabilities.


That is a reason to avoid cross platform frameworks. But there are big reasons in favour of using then as well. It's a trade-off depending on your use case.


For the vast majority of (mobile) apps, the benefit of being able to be built from a single code base outweighs being slightly behind vendor capabilities. Particularly things like there where it doesn't come up in some apps and relatively few people actually notice/care about it in those it does.


Google doesn’t think it’s own cross platform framework is good enough for its own applications

https://9to5google.com/2021/10/10/google-ios-apps-native/


> The company’s official guidance to past developer users is to “follow Apple’s Human Interface Guidelines and consider using modern UIKit components or SwiftUI instead.” That said, it also plugged Flutter as the way to “get a Material look and feel across all platforms.”

Doesn't seem like the article you linked accurately represents your statement.


So Google recommending Apple’s native framework is not encouraging people to use Apple’s native frameworks?


This wasn’t anything to do with Futter for the record and they even called it out in a quote saying that they continue to recommend Flutter in that article.


They continue to recommend it for other developers. But it isn’t good enough for them?

And typical Google

> As part of this shift, Google in July put Material’s iOS libraries in “maintenance mode.”

Who is to say Flutter isn’t next? Google has the attention span of a coked up teenager.


I haven’t really had a great experience with Flutter in the past, in my opinion I think React Native provides a better user experience. Developer experience is okay.

The best experience for users would be a library that handles business logic, as well as describes how the UI should be laid out, then building native clients that use that library.


Sorry for the very newbie question. Can someone compare this with let's say an Electron + React approach ?


Flutter is great for cross-platform UIs.

I found it a bit difficult to work with, and I also wanted to code my UIs from the back-end. So I wrote DocUI which will be released in the next month or two. https://nexusdev.tools


@tosh submits a great amount of posts. Most do not reach a great audience but a number do, and he has gained a large amount of points in a short time (despite being from 2010 he has only started this mass-posting recently). What's that about?





Can Flutter/Dart dynamically load code yet for apps that need plugins?

Love the concept but eyeing it for b2b style apps that need extensibility.


Depends on what you mean exactly. But you can split dynamically load code (all uploaded at once to the Play Store) via https://docs.flutter.dev/perf/deferred-components


I wish flutter3 would be simple and lean C which does not require a grotestquely and absurdely massive and complex c++ compiler.


Did dart eventually add sum types? That's basically the one thing holding me from trying flutter.


Not yet but they're apparently working on it: https://news.ycombinator.com/item?id=31346426


Question: can you write a de-googled flutter app?

Or does it require google services or call home monitoring


Question: can you write a de-googled flutter app?

Yes, there's several in F-droid. Flutter doesn't use any Google services by default.


Is Flutter beginner friendly? (Coming from an advance python background)


Yeah, fairly beginner friendly.

However, it doesn't hurt to know a bit about reactive UI concepts.


Flutter is great, hope the update doesn't break too much!


so...anybody using it to build web apps in lieu of react?


Where is that bad link? I'll fix it.


The link is fixed. Thanks


Something Google V3 actually exists?


Honestly I think browsers (desktop and mobile) will implement native apis faster than these things will implement native apis.

TLDR: JavaScript and browser apis will win in the end.


I use Flutter as a way to host a sqlite and business logic and render all UI in a local webview for this reason. Just testing now, but works OK.


It's already the case, Cordova/Ionic has much more native plugins than react native and flutter combined! https://www.npmjs.com/search?q=ecosystem%3Acordova It's only a matter of time before people realize how superior Ionic is, and I can't wait for people to realize Ionic is faster and more energy efficient too! https://ionicframework.com/blog/ionic-vs-react-native-perfor...


I have an irrational annoyance when projects claim to support "desktop UI" but then only have the most trivial of widgets commonly used in desktop applications. Where is my tree view? Data grid view? Charts? Native file dialog window?

From my perspective, while I'm sure Flutter is wonderful, it fits squarely in the "mobile" UI toolkit and "basic" desktop application category.


Hey there! I work on Flutter for desktop. I'm happy to provide a little background.

We made a decision early on to focus where those of us who work on Flutter could deliver the most value, and for Desktop that meant getting the runtimes and platform integration for each of the desktop OSes in good shape (international text input, accessibility support, rendering performance, etc.) as well as core integrations like the menu bar, file chooser dialogs, etc. These are things that need to land in the runtime itself and are significantly more painful for the community to contribute, or author and publish on pub.dev.

We're working on filling in the gaps for widgets that are part of the Material spec, and I expect the community to make and publish widgets on pub.dev that continue to surprise me; I'm blown away time and time again at the beautiful widgets and the community continues to produce either in packages or as pull requests. You should be able to find community-authored packages for treeview, datagrid, and charting on pub.dev today in the meantime.


With limited resources you have to choose. If flutter focused on UI elements before Mac OS + Linux stability, the top comment would be "Flutter is a solid option for Windows but without Linux or Mac support it is useless."

The flutter team has proven generally capable of developing UI elements on mobile across iOS/Android. Getting platform stability is a welcome step and i trust them to continue to build out the desktop element set.

Flutter has been my go-to for mobile app dev for years and i haven't considered returning to react native, pure native or cordova since i swapped.

All that being said, i have spent my afternoon debugging an issue with Flutter's first-party camera plugin, so it isn't all roses.


Even Apple's own declarative SwiftUI framework looks like it trails far behind covering rich, comprehensive AppKit apps: https://developer.apple.com/documentation/swiftui/building_a....


You can integrate appkit components into a swiftui app though.


This is a big gripe I have with WinUI. How on earth do you create a desktop UI framework that lacks something as basic as a tableview/data grid… it's only slightly less bad than a UI framework not having a button widget. One should not need to import a third party dependency or write your own for something so basic.


I'd love to see a "Back to the Future" desktop UI toolkit that has roughly the capabilities of AppKit circa 2003 but in a modern language, clean unified API, cross-platform, with seamless native UI integration, and of course not carrying hundreds of megabytes of Chromium gunk in each app like Electron does.


That would be wonderful. AppKit is the closest to perfect I've found in desktop UI frameworks. If it took some of the improvements found in UIKit and was cross platform I'd never use anything else.


not carrying hundreds of megabytes of Chromium gunk in each app like Electron does. this problem has been solved multiple times, see e.g. Tauri


Well I think all of these widgets are available on pub.dev. For example, I'm using the charts_flutter plugin: https://google.github.io/charts/flutter/gallery.html


I think a tree view was promised (listed on a presentation) when Flutter 2.0 was released, but no details were provided, and I haven't heard of it ever since.


You might be thinking of this package, authored by Google, mostly by people on the Flutter team but it's not an official Flutter project (as far as I know): https://pub.dev/packages/flutter_simple_treeview

(Disclaimer: I work on the Flutter team.)


who builds desktop applications anymore? it feels weird to say but i am starting to like them again after transitioning to basically 100% thin client/cloud services for the past 15 years.


I’m confused, do you not use desktop apps?


How many new desktop apps do you use (first released in the past ~5 years or so), and how many of them aren't Electron?

Desktop GUI software is a pretty small niche. The web has eaten nearly everything, and games don't use native UI stuff.


The post I replied to implied that the rate of production of them is decreasing, and you are claiming this too. I’m not convinced about that.


yes, the only market for new apps would be CLI, games and scientific computing/technical niches


I did in the early days when the web sucked, then dhtml and web2.0 started and I completely swapped. Now I'm starting to again. I like them more the web apps. But no one is making them anymore


What qualifies as a "desktop application" these days?

Is it any application designed primarily to work on a laptop or desktop form factor? A web application like SketchUp would qualify.

Is it an application whose code is only stored locally, even if they don't work well with a laptop/desktop form factor? Any number of native mobile apps would qualify.

What about a PWA that is cached locally but initially loaded via a URL?


I don't consider electron apps or any thin veneer over some javascript to be a desktop app.

I also don't consider native phone/tablet apps to be desktop apps


> I don't consider electron apps or any thin veneer over some javascript to be a desktop app.

So VSCode isn't a desktop app?


Does anybody know of any good Flutter for Windows applications that are worth looking at?


Rows [0], a spreadsheet app, has its Windows and macOS versions built in Flutter. It's quite fast from my usage. The marketing video they did for Flutter [1] goes into a little detail as to how they did it but they also have a tech talk that goes into more detail [2]. Their spreadsheet engine is open source as well [3].

[0] https://rows.com/download

[1] https://www.youtube.com/watch?v=OEdQXBUPYOE

[2] https://www.youtube.com/watch?v=fv_mzbEtUmU

[3] https://github.com/rows/swayze


Same question, do they have a reasonable component library on windows?



and rendering benchmarks


Figure out JSON de/serialization yet?


What do you mean? Dart has decent support for encoding/decoding JSON, with revivers or to Maps.


Just make a class and generate helper methods /s


I know this was sarcasm, but sadly, it is one of the better ways to handle this.


Google Flutter Team: You launched Flutter Desktop and got your promotions. Now can you please go back and finish Flutter Mobile? Specifically, please add:

- Integration testing [0, 1]

- Location [2]

- iOS dark mode [3, 4]

- iOS keyboard dismiss decoration [5]

- iOS keyboard scroll-to-dismiss mode [6]

- iOS NavigationLink widget [7]

- iOS checkbox widget [7]

- Android camera that doesn't randomly crash (unfixed for 3 years) [8]

- Android date-time picker (Requested in email to Flutter Team. They refused.)

- Usable documentation for Navigator 2.0 [9, 10]

- Debugger visibility into Dart async tasks

- Stop HTTP requests on timeout [11]

- Testing on physical devices for apps that use flavors [12]

- UI inspection tools that don't randomly stop working

EDIT: Added bug links.

[0] https://github.com/flutter/flutter/issues/88549

[1] https://github.com/flutter/flutter/issues?q=is%3Aissue+comme...

[2] https://github.com/flutter/flutter/issues/31453

[3] https://github.com/flutter/flutter/issues/48438

[4] https://github.com/flutter/flutter/issues/80860

[5] https://github.com/flutter/flutter/issues/45076

[6] https://github.com/flutter/flutter/issues/57609

[7] https://docs.flutter.dev/development/ui/widgets/cupertino

[8] https://github.com/flutter/flutter/issues/70751

[9] https://github.com/flutter/flutter/issues/69315

[10] https://github.com/flutter/flutter/issues/81610

[11] https://github.com/dart-lang/http/issues/424

[12] https://github.com/flutter/flutter/issues/99607


I think a lot of these comments are not necessarily valid or have been addressed already and we've lost the actual productive feedback in the mess.

- Integration testing - This exists and is very commonly used: https://docs.flutter.dev/cookbook/testing/integration/introd...

- Location - This 100% should be a core offering, its crazy that its not for mobile application.

- iOS dark mode - Flutter supports Dark Mode - https://api.flutter.dev/flutter/material/ThemeMode.html

- iOS keyboard dismiss decoration - Not sure on this.

- iOS keyboard scroll-to-dismiss mode - This is trivial to setup, just listen on scroll and hide keyboard. You could even create a generic handler that can be reused everywhere for this.

- iOS NavigationLink widget - Not familiar with this construct but easy to build yourself.

- iOS checkbox widget - Totally agree but also easy to build directly.

- Android camera that doesn't randomly crash (unfixed for 3 years) - We've got a couple application that use camera and never had this issue.

- Android date-time picker - This has been in for a long time: https://api.flutter.dev/flutter/material/showDatePicker.html

- Usable documentation for Navigator 2.0 - I think the updated docs on navigation have addressed this issue largely.

- Debugger visibility into Dart async tasks - You can 100% debug async tasks.

- Stop HTTP requests on timeout - This exists in Flutter https://stackoverflow.com/a/51489701

- Testing on physical devices for apps that use flavors - We do this regularly across 5 different flavors on both iOS and Android.

- UI inspection tools that don't randomly stop working - Never had this happen.


Just an additional note: Integration testing was indeed completely broken for a while, with the docs stating otherwise. They reworked it a few releases ago and since then it works well for us (limited usage, but completely stable for what we do with it).


Do you have tests that run on your host machine, can start an API server and interact with it, and also drive the Flutter app? Or do your tests run on the mobile device?


The tests run on the mobile device, or rather mostly the emulator. No API server to interact with (and I would not know why?). The shop uses integration tests for three things: 1. Testing some migrations 2. Click through the app, as part of a release checklist 3. Run crypto operation to check multiple plugins for continued compatibility.


Integration testing supports only running tests inside the device. If your test needs to start an API server, then you must use the deprecated and broken flutter_driver module. See the bug I linked.

Flutter's Cupertino dark mode support is broken. Some text is invisible. Some widgets are unusable. Cupertino Dark mode theme support is completely absent. See the bug I filed, with a comprehensive reproduction with screenshots. It's like the dev who added it just decided to stop half-way.

> - iOS keyboard scroll-to-dismiss mode - This is trivial to setup, just listen on scroll and hide keyboard. You could even create a generic handler that can be reused everywhere for this.

Please use an iOS device and notice how nicely one can dismiss the keyboard in iMessage, FB Messenger, Instagram, etc. Getting that behavior in Flutter requires using a third-party package.

The Material date picker is not a date-time picker. Letting the user pick a date & time requires a lot of extra code. For example, I spent many hours writing a widget that displays the date & time and lets one click to change it, like in Google Calendar.

See the bugs I linked about Navigator. The docs have multiple omissions. I lost a day and a half on them.

Yes, you can debug tasks with a breakpoint. You cannot see which async tasks are running. You cannot pause a task. I needed to debug concurrent RPC problems and tried using print. Unfortunately, print provides no visibility into tasks running in standard library code, like timed-out HTTP requests that continue running.

You can timeout waiting for an HTTP request to finish, but the request still continues in the background. If it's a large upload then it can continue for minutes, draining the device's battery and transferring data. See the bug I linked.

> - Testing on physical devices for apps that use flavors - We do this regularly across 5 different flavors on both iOS and Android.

How do you install on iOS? I tried `flutter build --flavor staging --release` and then `flutter install` which fails saying that I must supply `--flavor`. But when I supply `--flavor` it says the parameter is not supported. See the bug I linked. I spent a few hours and figured out how to first do a Flutter build and then use XCode to build again, then use Devices & Simulators to manually install the archive. But this requires that I remove the app from the device first, which destroys the app state. This makes manual testing extra slow. The process is noxious.

Flutter Inspector in Android Studio on macOS breaks 1 out of 5 times I try to use it. I often waste a few minutes trying to figure out why my code changes did not have the desired change on the widget tree. Then I finally realize that the widget tree pane is broken and I need to restart Android Studio. It's been like this since 2018 through multiple upgrades of Flutter, Android Studio, and macOS.


so much this


How not to get what you want


The only way I will get what I need from Flutter Team is if Sundar fixes the company's incentive structure to align employee incentives with long-term profitability. I do not expect that will happen. But if it did, I would probably immediately go back to work at Google and buy Google stock.


[flagged]



Platform-agnostic applications built with Dart. Kinda like Xarmin


Cross-platform mobile dev language that uses native widgets as opposed to react-native that uses a wrapper around JS.


Errr... hang on there. Last I checked Flutter draws their own controls, they're no different than React Native in this context.


React native controls are native to the mobile platform they are running on.


IIRC this doesn't hold true for everything - e.g, List View types aren't backed by a UITableView or UICollectionView, so they're subtly different.

Otherwise, yeah, I think you're right. It's been a bit since I dug around in RN internals.


There’s so much conflicting information in this thread


I actively avoid apps built on Flutter - they don't feel or act like a native app.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: