5 ms·
I work now with Flutter full time and love it, but on my way from web Vue.js to mobile development with Flutter, I was researching different app frameworks, and
by serial_dev 5y ago
I work now with Flutter full time and love it, but on my way from web Vue.js to mobile development with Flutter, I was researching different app frameworks, and I watched some videos with the main author of BeeWare/Toga, Russell Keith-Magee. The presentations are very engaging and the solution that this project came up is really something.
This is my favorite video by Russel [0], it really is a fascinating project, and he is a great speaker.
With that said, I don't really see it becoming a widely used framework. No matter how creative the solution is, it's hard to compete against real native, Kotlin Multiplatform Mobile, Flutter, React Native, Electron, and more. The most complicated example I saw with BeeWare is a todo list app [1]
[0] https://www.youtube.com/watch?v=qaPzlIJ57dk https://www.youtube.com/watch?v=qaPzlIJ57dk
[1] https://www.youtube.com/watch?v=RisCgSIWwLA https://www.youtube.com/watch?v=RisCgSIWwLA
- virtualwhys 5y ago> work now with Flutter full time and love it. Do you love Dart though? Flutter's stateful hot code reload is amazing but, man, for me Dart is just completely hideous. Maybe I've gotten spoiled by Typescript and Scala...
- travisgriggs 5y agoI’m with you. Dart felt like a step back in time for me. I was a big fan of some of the early Dart leaders (Lars Bak and Gilda Bracha). I remember when I asked why Dart seemed like a watered down variant of some Lars and Gilads earlier work; I was tiled by a former colleague that had joined the project that “Lars was playing it safer, playing to win” these days. I don’t know how much either of these people are associated with Dart anymore. Somewhere in Dart’s search of a killer problem to be the solution for, we got fully typed Dart (as opposed to the original annotations are optional mindset). I did one of the free web courses for it, built like 10 teeny pointless apps. Three things stood out: - the experience was kind of painful on iOS, the look had an “uncanny” effect - the tutor tried to explain classes as a “way of organizing code” which undersells what classes are really about (binding behavior to data) - the language felt like an alter Java (type declarations in the left side still??)
- serial_dev 5y agoOh, Dart is my favorite part of Flutter. It's a language that is very easy to learn and use, no surprises, it's performant (performant enough), and you can use it on web, server and as command line apps, too. The language has gotten significantly better and the Dart team focuses on the right issues to solve next.
- berkes 5y ago> on web Does it stranspile to JavaScript, or compile to asm, or something else entirely?
- devxpy 5y agoTranspile to Javascript https://dart.dev/overview#platform https://dart.dev/overview#platform
- _delirium 5y agoIt compiles to JS: https://dart.dev/tools/dart2js https://dart.dev/tools/dart2js The Dart team is investigating a dart-to-wasm compiler, but is waiting on the Wasm GC proposal to be standardized: https://medium.com/dartlang/experimenting-with-dart-and-wasm-ef7f1c065577 https://medium.com/dartlang/experimenting-with-dart-and-wasm...
- serial_dev 5y ago> Dart supports the web as one of its core platforms. Dart-to-JavaScript compilers are available both for development and for production. You can learn more about the status quo here https://dart.dev/web https://dart.dev/web Compiling to WASM is on the roadmap https://github.com/flutter/flutter/wiki/Roadmap#dart https://github.com/flutter/flutter/wiki/Roadmap#dart > Dart (...) We also plan to expand Dart's compilation toolchain to support compiling to Wasm, contingent on the timely standardisation of WasmGC.
- boot_loop 5y ago
- kumarvvr 5y agoDo you work with Flutter for mobile apps only? Or do you target other platforms? I want to try out Flutter, but my main target is Web and Desktop apps (Recent update from Flutter for Windows Desktop Apps made me want to learn it) I have heard several criticisms regarding flutter for Web, that bundle sizes are high and load times are slow. What is your opinion? How was the experience, and most importantly, is designing apps with flutter easier on the cognitive side?
- fyzix 5y agoFlutter web is not fit for consumer facing products imo, it renders in a canvas so the performance will never match up to html+css+js. I've used it to make desktop apps but there's still some rough edges but it's getting better. Definitely better than electron though.
- serial_dev 5y agoIMO, Flutter for web only makes sense if you already have a mobile or desktop app done, and you are looking for a quick win: if your app is architected properly, adding web support for a mobile app project is really a matter of hours (or even minutes) which is amazing if you can live with the less-than-perfect UX. Flutter on the web looks like Flash, everything feels very off, scrolling, keyboard support, text selection, etc everything just feels strange or doesn't work and it provides a poor end user experience. Apart from the good mobile experience, I'm also excited about Flutter on desktop. It might not be "there" yet (I don't know, I am not using it in production), but it's promising and could be a good alternative to native desktop development and Electron.
- PascalW 5y agoFlutter for web is quite rapidly improving in all the areas you mentioned. For right now I think it's already very suitable for highly complex browser applications such as a Figma, Google sheets etc. Load times aren't the best due to a quite hefty WASM download, but for _applications_ that you typically open only a couple of times per day and where you work in for several hours, that initial loading delay really doesn't matter. Just don't expect to use it for an E-Commerce site or something like that.
- udbhavs 5y agoDoes Kotlin Multiplatform mobile handle the UI layer for both iOS and Android? I thought you could only share business logic
- udbhavs 5y agoEdit: It looks like there are some efforts to bring it to iOS https://github.com/cl3m/multiplatform-compose https://github.com/cl3m/multiplatform-compose
- serial_dev 5y agoYou are correct. The technical details of the solutions I listed can be different, but in the end they are often competing for the same users (I need an app, which solution should I use).
- udbhavs 5y agoI haven't looked too deeply into how BeeWare works, but why is it so uncommon to see similar solutions in other languages like Kotlin, Go, Rust etc? Basically the React Native approach but without JS. I would love to write multiplatform native UIs in any of these languages. I have nothing against Javascript but there are still a lot of weird limitations in RN despite being several years old. Writing smooth animations that support user interaction is difficult because it is still single threaded and you are limited to a declarative animation api where the underlying native runtime does the interpolation. React-reanimated v2 tries to solve this by spawning JS worklets that can run animation code in another thread but that comes with its own caveats. This would be so much easier to do in a language with built in threading, not to mention all these languages are very ergonomic and loved by developers so I'm curious why something similar hasn't been tried for them yet.
- c0balt 5y agoFor the languages it boils down to availability of relevant ecosystem and developers in my experience. Why react-native, well, because it means you have access to one of the largest ecosystems and an awesome tooling catalogue. The same applies for JS as the language of choice for App (UIs). Kotlin was also a great candidate since it could leverage the already mature Java ecosystem for android. Flutters success is an outlier here that I would guess is due to Google backing. The resources and docs are good and you could rely on financial and developer backing. The decision to go with Dart was most likely to make themselves not dependent on another party for a core utility and to have a steering position on the overall projects course. If, for example, Microsoft would back a good C# cross-platform framework I would bet on it at least seeing moderate adoption. Edit: As another commenter pointed out, GO has a cross-platform GUI Framework option - Fyne [https://github.com/fyne-io/fyne https://github.com/fyne-io/fyne]
- bb88 5y agoThere's been quite a few "python" in the browser/android/native kinds of things: * pyjs / pyjamas * brython * kivy * chaquopy * pyqt * pygtk * ... But the first big problem has always been delivering an experience that looks and feels right on the target platform. Do you use the native UI or do you use something else? The swing Java UI's of the 00's were so kludgy, and looked unprofessional because they implemented their own UI components. The other big problem is that how does the code run? Is it transpiled to javascript or does it have to download a python interpreter that can run in the browser/android? It's not a big issue for like a native app for mac/windows, but for the browser it is. https://brython.org https://brython.org takes ~6 seconds to run a simple clock because it's downloading the interpreter. Wasm doesn't necessarily help here, since either you compile the code to directly run on wasm, or you need to bring along the wasm compiled interpreter. An example of this is Jython. It needed to start the JVM, then run the python code in the python interpreter in the JVM. Very inception like, though I did enjoy writing unit tests this way. Mostly because unit tests didn't need to be compiled against a jar. And broken unit tests didn't need a full recompile.
- password4321 5y agoAdd Fyne to the list, using Go. https://hn.algolia.com/?query=Fyne%20-fine%20comments%3E0 https://hn.algolia.com/?query=Fyne%20-fine%20comments%3E0