[HN Gopher] Flutter 3 ___________________________________________________________________ Flutter 3 Author : tosh Score : 242 points Date : 2022-05-11 19:50 UTC (3 hours ago) (HTM) web link (docs.flutter.dev) (TXT) w3m dump (docs.flutter.dev) | 5cott0 wrote: | Figure out JSON de/serialization yet? | tylergetsay wrote: | Just make a class and generate helper methods /s | LocalPCGuy wrote: | I know this was sarcasm, but sadly, it is one of the better | ways to handle this. | [deleted] | mekkkkkk wrote: | What do you mean? Dart has decent support for encoding/decoding | JSON, with revivers or to Maps. | strongpigeon wrote: | 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. | [deleted] | mhoad wrote: | That was part of the release today I believe. | sfshaza wrote: | This works for me: https://docs.flutter.dev/development/packages- | and-plugins/ha... | scrame wrote: | croes wrote: | https://en.m.wikipedia.org/wiki/Flutter_(software) | mike10921 wrote: | Cross-platform mobile dev language that uses native widgets as | opposed to react-native that uses a wrapper around JS. | Klonoar wrote: | Errr... hang on there. Last I checked Flutter draws their own | controls, they're no different than React Native in this | context. | dabeeeenster wrote: | React native controls are native to the mobile platform | they are running on. | Klonoar wrote: | 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. | potatoman22 wrote: | Platform-agnostic applications built with Dart. Kinda like | Xarmin | sfshaza wrote: | Where is that bad link? I'll fix it. | sfshaza wrote: | The link is fixed. Thanks | lazypenguin wrote: | 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. | liquidise wrote: | 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. | kitsunesoba wrote: | 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. | gman83 wrote: | 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 | cbracken wrote: | 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. | pavlov wrote: | 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. | kitsunesoba wrote: | 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. | SemanticStrengh wrote: | 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 | [deleted] | nickstinemates wrote: | 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. | danans wrote: | 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? | bowsamic wrote: | I'm confused, do you not use desktop apps? | TillE wrote: | 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. | SemanticStrengh wrote: | yes, the only market for new apps would be CLI, games and | scientific computing/technical niches | edko wrote: | 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. | cbracken wrote: | 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.) | Austin_Conlon wrote: | Even Apple's own declarative SwiftUI framework looks like it | trails far behind covering rich, comprehensive AppKit apps: htt | ps://developer.apple.com/documentation/swiftui/building_a.... | rahkiin wrote: | You can integrate appkit components into a swiftui app | though. | the_duke wrote: | Despite many maturity issues in practice Flutter is the only | realistic option for true cross platform UIs that run everywhere. | Apart from Qt , but the licensing issue is a hindrance. And yes, | the web backend isn't ideal, but it will improve over time. | | I just wish Google had built Flutter on a low level core that | isn't tied to Dart, so it would be usable from other languages. | | Dart isn't horrible and is getting better, but it is still a | somewhat awkward mish mash of Java and JavaScript, and I don't | really enjoy using it. | | The only reason to use Dart is Flutter, which really hurts | ecosystem health / library availability and prevents code sharing | with the backend. | LocalPCGuy wrote: | I still maintain that Flutter Web is not production ready. It | could have a nice niche, like games. But for real apps, it's | just not as good as web. They are still re-implementing things | that have existed in the web for ages, and are not going to be | able to keep up. It's basically good for an applet style usage | IMO. I'll keep trying it out, I think Flutter is pretty great | for mobile, even desktop, but every time I use a web app | example I find issues and just shake my head at what they did. | mekkkkkk wrote: | The way it atleast used to be framed is that web is a | fallback target. Meaning if the target device isn't running | Linux, Windows, macOS, iOS or Android (unlikely), then hey, | you can atleast build a _passable_ version that will run in a | browser. | | I don't know if this has changed, but I know only a mad man | would try to build a proper website in Flutter. It's not the | tool for the job. | LocalPCGuy wrote: | No, it is 100% being framed as "You can build your app once | and deploy it everywhere" with everywhere including web. | It's sorta maddening, IMO. There are certain types of apps | I could see using Flutter for (basically, ones that would | lean heavily on canvas anyways, games, drawing, etc.) | mekkkkkk wrote: | It's hard to quantify exactly what "everywhere" means, | but for the vast majority of end-user devices, you'll | have a more efficient Flutter build target than web. | | You're probably right in that they are pushing the "first | class web target" narrative a bit far, though. | mhoad wrote: | FWIW I kind of agree and I'm a big fan of both Flutter and | the web in general. | | There are a couple of web platform technologies that I think | are going to take Flutter web from ok to great in the next | year or two including. | | WASM Garbage Collection is going to allow them to move from | compiling to JS to WASM. They have already built a WASM | compiler ready to go when it lands. | | WebGPU is another obvious one. Flutter is by definition a | canvas optimised framework rather than strictly DOM based | (although they support that too as a target). But they should | be able to get blazing fast canvas rendering with those two | technologies alone. | | The other big one that I think will help them is going to be | AOM. Lots of the built in browser accessibility stuff was | built for a DOM based world, the web platform needs better | primitives to support canvas frameworks too. | SemanticStrengh wrote: | > Flutter is by definition a canvas optimised framework Not | really, flutter has not the resources to develop their own | 2D renderer so they use the chromium renderer for drawing. | (Skia). It is canvas-like, everything is canvas-like at low | level. But flutter like browsers implement retained mode | rendering which is necessary for being jank free and have | low energy consumption. Flutter on web canvas cannot | properly do retained mode rendering. | | spoiler, flutter non-web is generally slower than Ionic | LocalPCGuy wrote: | Yah, this is a pretty solid list of things that, if they | all hit and work as we hope they do, it could enable | building things with tech like Flutter and having it work | well. I think that's why I generally say FlutterWeb isn't | production ready and not that it'll never be. I don't care | for the path they took originally, it feels like a bandaid | and has a lot of issues. They may get there eventually, and | I'll be happy to adjust my position when/if they do. | jonahx wrote: | > Despite many maturity issues in practice Flutter is the only | realistic option for true cross platform UIs that run | everywhere. | | What are your thoughts on flutter vs react native? | | (assuming you're only targeting phones) | mhoad wrote: | One anecdote that I find compelling here is looking at how | each of the parent companies think of them. | | The majority of Google's revenue is directly tied to their | Ads platform. | | Their mobile app is written in Flutter and the web interface | is written in Dart (not flutter as flutter web support is | like around a year old). | | Facebook uses React on the web and abandoned react native on | mobile. | | Both are responsible for billions of dollars but only one | passed the test. | hunterb123 wrote: | > Facebook uses React on the web and abandoned react native | on mobile. | | That's not true, FB very much still uses RN on mobile. | mhoad wrote: | The Facebook app is not written in React Native. They | tried it and famously abandoned it no? | hunterb123 wrote: | Not GP but my comparison is here: | | https://news.ycombinator.com/item?id=31346887 | criddell wrote: | > Flutter is the only realistic option for true cross platform | UIs that run everywhere. | | Do you really want cross platform _everywhere_? You might want | it but what you inevitably get is something that is huge and | just okay everywhere instead of something truly great anywhere. | Is that a trade off you are happy with as a user? | | That said, I do happily use a couple of cross platform | applications. PyCharm and SublimeText which are great and | Fusion 360 which is powerful but awful to use. | SergeAx wrote: | We really want cross platform on Android and iOS. Windows and | MacOS are nice to have, why not? | mattsolle wrote: | I thought I would hate Dart since it seems like such a bland | language but after working in it for a year and a half its | easily one of my favorites. Its straightforward and tailored | directly for Flutter's use-cases. It feels like it doesn't come | with a lot of the baggage you get with other, longer-lived | languages. It is also incredibly readable without hiding how it | works behind decades of syntactic sugar. All that to say, I | definitely see how it can be disliked and I also disliked it | when I started working with it but it definitely grew on me. | KronisLV wrote: | > It feels like it doesn't come with a lot of the baggage you | get with other, longer-lived languages. | | Doesn't this mean that you are currently simply in the sweet | spot where the language is usable but also not bloated yet? | As in, it could all change in a decade and therefore isn't an | intrinsic quality of the language itself, but merely the | passage of time. | | I recall this blog post exploring the possible correlation | between the age of any programming language and the | developers' disposition towards it: | https://earthly.dev/blog/brown-green-language/ | mhoad wrote: | This might not be obvious in anyway if you're not pretty | deep in the Dart ecosystem but I've never seen anyone pay | as much attention about building a good long term language | as that team. | | They put crazy amounts of thought and effort into how they | evolve it. | | Their entire strategy as far as I know was to intentionally | aim for "boring and predictable" so that no matter how | large or complicated your application got that you would | never outgrow it. | | Then they built a bunch of really nice tooling and DX on | top of it. | | It's genuinely a pleasure to work with in my experience. | clumsysmurf wrote: | I was enjoying the frog book (The Dart Programming Language, | Gilad Bracha & Erik Meiker) but that was 2015, and now very | out of date. Its strange to see there is no up to date book | from major publisher, like the Rust book at https://doc.rust- | lang.org/book/ | jackosdev wrote: | I've had to bounce around from Mac, Windows and Linux for work, | the main programs I use everyday are all Electron based | (Postman, VS Code, Spotify etc), they all behave basically the | same just everything is slower in Windows on my laptop. Egui | (immediate mode GUI) and Tauri (like Electron but Rust backend) | have worked well cross platform just messing around with them, | but I haven't used any big apps yet to know for sure. | folkhack wrote: | > Dart isn't horrible and is getting better, but it is still a | somewhat awkward mish mash of Java and JavaScript, and I don't | enjoy using it. | | All anecdotal: | | I've only met one person who was excited to work with Dart, | huge Google fanatic/fanboy. Otherwise it's sorta seen as a | unique language choice that makes other devs go, "oh..." | | The Java/ECMA ergonomics are weird, it's hard to find devs who | have experience with the lang, and due to the language | popularity there's a lot less community/3rd party deps | available. | | I really tried hard to give it a fair shake back in the day but | I just ended up sticking with Node (and now +Deno), Typescript, | or Go if I need performance/types. There are way better | ecosystems around these and I find the tooling/ergonomics much | less awkward. Also, if/when I need to hire devs onto my teams I | will have a _much_ easier time. | | Also, I can actually write a serverless function in these tools | (GCP Functions, AWS Lambda) - as far as I know there's nothing | like this available for Dart. | | --- | | EDIT: It's worth mentioning I've only had Dart jammed down my | throat on the backend (API's, data transforms, jobservers, | etc). It may be a fine tool in regards with Flutter, but it | felt like a _really_ awkward tool for where it 's come up in my | career. | mhoad wrote: | Here's one from Google | https://pub.dev/packages/functions_framework | folkhack wrote: | > Google Cloud Functions does not currently provide an | officially supported Dart language runtime, but we're | working to make running on Google Cloud Run as seamless and | symmetric an experience as possible for your Dart Functions | Framework projects. | | It's not natively supported - runs on Google Cloud Run | instead. | sofixa wrote: | IIRC you can transpile Dart to JavaScript, so technically you | _can_ deploy it as serverless functions. | JyB wrote: | I may be missing something, but why would you want to build a | serverless function in Dart? you want a common | backend/frontend language? | folkhack wrote: | I don't. | | It is one of my arguments against devs trying to bring Dart | into solutions. Historically, I have had colleagues push to | use Dart for backend/cloud/automation work which I | personally disagree with. | ClumsyPilot wrote: | > Dart isn't horrible and is getting better, but it is still a | somewhat awkward mish mash of Java and JavaScript | | Sounds like they should have used TypeScript? | michaelbrave wrote: | I was thinking MAUI(rebranded Xamarin) might be somewhat useful | with .NET6 coming out. I've been playing with it the last week | or so, it's quite nice. | mhoad wrote: | For what it's worth Dart is hands down the nicest OOP language | I've ever used in my opinion. | | It's like they took all the good things about JS and Java and | cut out all the bad parts. What's left is basically Dart. | SemanticStrengh wrote: | People being pleased with Dart is only because they have not | tasted better, everything is relative. Kotlin is miles ahead. | Mertax wrote: | I think the decision of which cross platform technology to | use mostly depends on a team's preferred tech stack. | | C++ -> QT | | C#/.NET -> MAUI/Blazor | | JS/Web -> React.Native/Electron | | Dart -> Flutter | | This is what I think is holding back Flutter -- that it | wasn't built on an incumbent technology. Because Dart doesn't | have quite the following, it has to evangelize itself a bit | more than the other options. | SemanticStrengh wrote: | note that many languages credibly interop with JS/TS | nowadays | ttcbj wrote: | I have been developing in Flutter for a few years now, and I | really enjoy the ecosystem. It is the only mobile development | environment I have every really enjoyed using. | | When I started, flutter worked on mobile, and web support was | in beta. Now, my app works on iOS/Android/MacOs/Web. If you are | a small developer with limited resources for cross-platform | development, its an amazing environment. | | As for Dart, it is actually one of the things I like most about | flutter. I really like the parameter passing/naming syntax. It | is flexible and expressive. If you are looking for something | that will challenge all your basic assumptions about what a | language should be, you'll be disappointed. But if you come | from any c-syntax background, you will pick it up almost | instantly, and find a lot of nice ways to make code more | concise and maintainable that previous languages. | | In my experience, Flutter is a great environment for getting | things done with limited resources. | curuinor wrote: | they got clojuredart now, which is still kind of a fly-by-night | thing but those Roam Research peeps are apparently using it in | production | | https://github.com/Tensegritics/ClojureDart | | (and in turn, clojure itself is a highly opinionated thing | which isn't gonna turn into a blub that everyone uses...) | samwillis wrote: | > Flutter is the only realistic option for true cross platform | UIs that run everywhere. | | I understand that argument but 100% disagree. The _web_ is | _the_ cross platform that runs everywhere (as in in a browser | or webview). True it has many issues and some forms of it | (electron) are not ideal for some use case but I believe it's a | better platform than flutter in almost every way. | | You say "true" cross platform and could argue that the web | isn't "true" cross platform. But really is anything? | [deleted] | mekkkkkk wrote: | I have yet to see a world in which local file access, | background services, local notifications, timers, alarms, | native media controls, etc, works as well on web as in native | apps. A lot of it is there "in theory", but web tech has the | achilles heel of only allowing stuff that would be safe to | have in a random website that some asshat links you on | twitter. | | Of course this is only relevant if that deeper plumbing into | the OS is needed, and of course it's quickly changing. | Perhaps the day comes when web apps can truly be first class | citizens in all major OSes, but it ain't here yet. | SemanticStrengh wrote: | You have yet to see a world where people update their | beliefs more than once per decades. Hybrid native web apps | are trivial, see e.g. Ionic capacitor plugins | LocalPCGuy wrote: | This 100%. Also, Flutter Web is still pretty much an | abomination (right now), IMO. Sure, it "works". So did Flash. | (edit: Just wanted to add, I love Flutter for mobile, even | think desktop might work. Just don't think it's for web. | Maybe for very specific app types.) | hunterb123 wrote: | I disagree, Flutter is probably the worst choice. React Native | is the all around best choice for targeting all platforms | natively, otherwise use pure web tech (Ionic + Electron) | | The desktop and web targets for Flutter are laughable in their | current state. Completely unusable so I consider Flutter to be | a mobile only platform at this time. | | Another downside is Flutter's emulated UI, it doesn't bridge to | native controls like React Native, it's noticeable on iOS | especially and will be hard to maintain the fake physics / | styling. | | React Native is ready for production now for all platforms, | including Windows & Xbox via react-native-windows, Web via | react-native-web, MacOS via react-native-macos or Catalyst. | | Then there's the question as to why would you choose a Google | only language and framework with their track record. | | With React you can use TypeScript or JS, you don't have to | learn a new language or get locked into a framework. | amelius wrote: | > I just wish Google had built Flutter on a low level core that | isn't tied to Dart, so it would be usable from other languages. | | Any chance that someone will build a transpiler from e.g. Go or | even Rust to Dart? Or is Dart too exotic to be used like that | in a practical way? | skybrian wrote: | Flutter and Dart have co-evolved to the extent that | separating them would be difficult. | | One problem would be expressing the Flutter API as a Go API. | For example, Flutter has lots of constructors with lots of | keyword arguments. Flutter is doing things with keyword | arguments that would be expressed as props in a React-style | UI. A similar thing happened with JavaScript and JSX - while | you _can_ write a React-style UI without JSX, you probably | wouldn 't want to. | | Maybe you could define props using structs in Go, but the | result would be awkward, particularly because Go doesn't have | an easy way to bulk-copy fields from one struct to another, | like you do with spread arguments in JavaScript. | | Also consider that Flutter uses class hierarchies extensively | and Go doesn't have inheritance. | | Maybe look at how web development is done in Go when it's | compiled to WebAssembly. Is that how you'd want to do web | dev? | eweise wrote: | I don't know the history, but wouldn't Kotlin be a saner | approach? Better language and at least native to android. | SemanticStrengh wrote: | nowadays you can do web programming in KotlinTS | fmakunbound wrote: | > I just wish Google had built Flutter on a low level core that | isn't tied to Dart | | Why did they tie Flutter to Dart anyway? | mhoad wrote: | Take a look at this video from the team that talks about this | exact topic. After watching it initially it became very | obvious to me why and I agree it was the right choice | https://youtu.be/J5DQRPRBiFI | sph wrote: | I keep hearing this, but none of the cross platform apps I run | use Flutter. It's all Electron and Qt. | | I don't think I've ever seen Flutter in the wild. | brundolf wrote: | Or have you, and you just couldn't tell? | | (I personally don't know if it's this good, but it's | plausible) | folkhack wrote: | Not OP - but almost all of the Flutter work I've ran into | is mobile-centric. | | If you're looking for cross-platform on the desktop it | really hasn't been a popular option vs. Electron/Qt. | qaq wrote: | Given that "Today, we are excited to announce that | Flutter is now stable for macOS and Linux, in addition to | Windows!" thats not surprising | folkhack wrote: | Of course, and to be clear I'm excited there are more | cross-platform options even though I've had a reluctant | history with Dart. | brundolf wrote: | I read "I don't think I've ever seen Flutter in the wild" | to include mobile, but maybe I misinterpreted | skybrian wrote: | They just launched cross-platform desktop support today. Who | would be using it for desktop apps like Electron? | sarmasamosarma wrote: | SemanticStrengh wrote: | > is the only realistic option for true cross platform UIs that | run everywhere | | wtf.. Ionic/electron is the true cross platform, no debate. | Flutter web is dog shit. | danielvaughn wrote: | Ionic is pretty awful too, though I can't fault them. It's | just that papering a web interface on top of a native app is | gonna be a poor experience no matter what. | ipnon wrote: | 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. | LocalPCGuy wrote: | 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. | potatoman22 wrote: | IMO it's most useful for more compute intensive web apps like | an image editor. | simulate-me wrote: | What's wrong with using a single canvas? It can be faster. | Google Docs and Figma, for example, use canvas rendering | slibhb wrote: | 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. | SemanticStrengh wrote: | 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. | dmitriid wrote: | > What's wrong with using a single canvas | | You can't even select and copy text. And canvas is | inaccessible to screen readers | the_duke wrote: | For accessibility they create a separate DOM tree just for | screen readers. | steve_adams_86 wrote: | 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. | 10000truths wrote: | 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. | steve_adams_86 wrote: | 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. | LocalPCGuy wrote: | 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. | gitgud wrote: | 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. | LocalPCGuy wrote: | Heavy emphasis on HUGE tradeoff. Too much for most web | apps, IMO. | kolanos wrote: | Both are pretty disastrous accessibility-wise. | strix_varius wrote: | 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. | mleonhard wrote: | 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 | [deleted] | [deleted] | throwawaycuriou wrote: | How not to get what you want | mleonhard wrote: | 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. | mattsolle wrote: | 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. | mleonhard wrote: | 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. | onli wrote: | 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). | sergiotapia wrote: | 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. | mattsolle wrote: | 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. | JyB wrote: | > I'm just sick of the NPM/Javascript bullshit. | | Amen | mekkkkkk wrote: | 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. | strongpigeon wrote: | 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. | akmarinov wrote: | No, use native if you want to avoid that | MrDresden wrote: | There is no framework that never has issues. | | Flutter has its fair share (and to be fair, so do the native | toolchains). | livinglist wrote: | I have been working on a Hacker News client using Flutter, if | anyone is interested: | | https://github.com/Livinglist/Hacki | mnorris wrote: | 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. | tomatowurst wrote: | so...anybody using it to build web apps in lieu of react? | msoad wrote: | What are big and highly used apps that use Flutter? | mhoad wrote: | Google Ads uses it on mobile which is responsible for literally | billions in revenue. | mattsolle wrote: | 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/ | strongpigeon wrote: | 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 | justinmc wrote: | Do you have an Android version? | LocalPCGuy wrote: | 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. | hermanb wrote: | 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. | discreteevent wrote: | Canonical have specified it as the default development tool for | their apps (e.g. the Ubuntu installer) | davidkuennen wrote: | 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 | trey-jones wrote: | Google Home is the first thing that comes to mind. | | See here: https://flutter.dev/showcase | msoad wrote: | 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! | trey-jones wrote: | It's very spotty connecting to my Chromecast as well, but | the UI is cool! | strix_varius wrote: | Google home is my most-hated mobile app. It's slow, janky, | buggy, and has terrible UX. | kringo wrote: | 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? | justinmc wrote: | 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... | brabel wrote: | Flutter 3 comes with an upgrade to Dart 2.17 [1], which has quite | a few improvements as well... including state on enums. | | While that's great, I was hoping it would be like in Rust, where | each enum variant can declare its own state components, but | unfortunately it seems to be more like Java: same state for all | variants. | | Well, at least there's quite a few other small but useful | improvements... and they showed how they really listen to the | community by implementing the new syntax for passing on | constructor parameters to a super-class... and by improving the | docs of the 200 most popular packages with lots of examples, as | requested by the people. | | I like how they're listening to the community as well to | implement meta-programming (like macros) [2] to solve the main | pain point, currently, in Dart, which is how verbose it is to | generate code for things like serialization and data types. | | Once they get that, Dart will be a really good language to work | on (it's already quite ok IMO, despite most people, usually those | who don't actually use it much, hating on it). | | [1] https://medium.com/dartlang/dart-2-17-b216bfc80c5d | | [2] https://github.com/dart-lang/language/issues/1482 | kaba0 wrote: | > While that's great, I was hoping it would be like in Rust, | where each enum variant can declare its own state components, | but unfortunately it seems to be more like Java: same state for | all variants. | | As much as I like Rust's enums, I think they messed up on the | naming. Java (and according to your comment, Dart) gets enum | rights. What Rust has under this name is sum types, which is a | separate (more expressive) concept and the two only correspond | with each other in the case of a sum type where each component | is of a zero-arity type. | the_duke wrote: | There is no real reason to have basic enums if you have ADTs | , since those can easily provide everything a plain enum | gives you. | | I guess the name was just a historical artifact. | SemanticStrengh wrote: | no the feature you're looking for is sealed classes, see | e.g. Kotlin. Rust enum variants cannot be externally | defined classes | the_duke wrote: | That's completely orthogonal to ADT vs enum. | SemanticStrengh wrote: | Enums enable two things: check current type from union of | types and exhaustivity check in switch | | The former is solved by reflection, the latter by sealed | classes. | kaba0 wrote: | I agree (that's what I meant under the more expressive | part), though it is a bit more complex with identity in the | way. Java's enums are also the singleton pattern. | | Java recently got ADTs as well in the form of sealed | classes and records, here an enum would look like this: | sealed interface Color permits Red, Blue, Green { | | } record Red() {} record Blue() {} | record Green() {} | | You can now create as many Red instance as you want, they | will be "equals" only under equals(), not under ==, while | the latter is also true for the enum case. | munificent wrote: | _> While that 's great, I was hoping it would be like in Rust, | where each enum variant can declare its own state components, | but unfortunately it seems to be more like Java: same state for | all variants._ | | Yes, the enhanced enums we shipped in 2.17 are like Java enums. | | We are also working on support for pattern matching and | algebraic datatype-style programming: https://github.com/dart- | lang/language/blob/master/working/05... | | I say "style" here because object-oriented languages like Dart | can already mostly model sum types using subclasses. What you | need to get the rest of the way there is basically just: | | 1. Sealed types so that the compiler can check for | exhaustiveness when you match over all of the subclasses. | | 2. A nice pattern matching syntax to let you discriminate | between the subclasses and destructure them. | | 3. Ideally, a nice lightweight syntax for defining a sum type | family as a superclass and set of subclasses, though this is | relatively less critical. | | We're hard at work on this, but pattern matching in general is | a pretty large feature and retrofitting it into a language | whose syntax wasn't initially designed around it is a | challenge. | | I'm very excited about macros too. That's another large, | difficult feature, but one that I hope will provide a _lot_ of | power to users and make the entire ecosystem more valuable over | time. | obert wrote: | Happy paths not found... | https://docs.flutter.dev/development/platforms-and-plugins/h... | sfshaza wrote: | Fixed! Thanks | | It's: https://docs.flutter.dev/development/packages-and- | plugins/ha... | ushakov wrote: | did they fix the scrolling on iOS? | scarface74 wrote: | Yet another reason to avoid cross platform frameworks. They are | always catching up to the vendor's capabilities. | discreteevent wrote: | 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. | LocalPCGuy wrote: | 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. | akmarinov wrote: | 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. | SemanticStrengh wrote: | if they disable the shader jit it will result in much worse | performance overall | karlmdavis wrote: | 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." | SemanticStrengh wrote: | can does not mean it will. | butz wrote: | 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. | vogtb wrote: | Yes, there are two default widget packages, Cupertino and | Material. | | https://docs.flutter.dev/development/ui/widgets/material | mhoad wrote: | It's built right into it. Both material 2 and 3. | tylergetsay wrote: | 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. | hbn wrote: | 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. | trulyrandom wrote: | 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. | oldgradstudent wrote: | 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? | mekkkkkk wrote: | 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! | baisq wrote: | Does anybody know of any good Flutter for Windows applications | that are worth looking at? | SemanticStrengh wrote: | and rendering benchmarks | onphonenow wrote: | Same question, do they have a reasonable component library on | windows? | redsolver wrote: | There's https://pub.dev/packages/fluent_ui | endisneigh wrote: | 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. | sarmasamosarma wrote: | SemanticStrengh wrote: | 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... | farmin wrote: | 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. | 999900000999 wrote: | 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. ___________________________________________________________________ (page generated 2022-05-11 23:00 UTC)