13 ms·
Flutter and Dart, or how to quickly build a mobile app without losing your hair
- askafriend 7y agoIf mobile is at all critical to your business, then you build in native - period. I think we've all learned at least that much in the past few years. A lot of businesses either overestimate or underestimate their mobile product needs because they don't understand the market or the platform. Expectations for an interactive consumer mobile app (Ride-sharing, Social media, Photo editing, etc) are extremely high and it would be foolish to under-invest or try to take shortcuts. At the same time there are ton of businesses (Home listings, Saas tools, Informational apps, etc) that would be well served by a simple React Native app. Know which type of business you are.
- glouwbug 7y agoPerformance critical, for sure, but in more areas than you think: My 2012 thinkpad (i5-3320M) maxes out 100% one of it's CPU while I type on facebook messenger.
- askafriend 7y agoIf you're doing anything super gestural, with lots of complex animations and transitions, you'll inevitably have to drop down into native to get the interactions right. So it's about more than just performance though that is a big part of it too.
- yesimahuman 7y agoThe plethora of companies building mission critical apps on platforms like Ionic and React Native would stand to disprove this
- sschueller 7y agoThere are two new app only banks here in Switzerland and they both use a cross platform framework. One for sure ionic. On Android these apps are absolute garbage. They are slow to start, slow interaction and slow animation. One of these apps has a main.js in it that has over 200k lines of crap with hundreds of lines of if (ios) and if (android). All the iOS styles are packed in the Android apk which is just stupid. If these banks want to compete with revolut or transferwise they need to provide an app that's isn't garbage.
- nexuist 7y agoMy local bank has a native app as far as I can tell and it regularly takes over 10 seconds to get past the login page. My credit card (Discover) app somehow won an award for best UX in the industry and still takes over 5 seconds to log in (both of these are with Face ID by the way). Contrast this to Robinhood, which jumps from cold boot to main screen in about a second. The problem is not the frameworks, it is poor development practices. Until the big guys learn that outsourcing critical software is a stupid idea, the next generation cool kid apps will continue to eat at their customer base (until they become relevant enough to be bought out by the big guys, and the cycle repeats).
- askafriend 7y agoThere is a difference between mission-critical and critical for the business. For an entity like Snapchat, it is the business. It'd be stupid for them to even think of trying to cut corners to save a few bucks by maybe sharing some code.
- tomduncalf 7y agoNot saying you are wrong at all - building something with highly complex interactions, real time image manipulation etc. such as Snapchat would likely require dropping down to native code for a good part of it - but “maybe sharing some code” isn’t really fair - in my experience, React Native allows you to share the vast majority of code (aside from any native bits, of course). We’ve built a pretty complex and highly visual music learning app for iOS and Android recently, and thanks to the combination of React Native, Unity and JUCE (C++ audio framework), pretty much all the code is shared. Seeing it run on Android with no big changes needed (aside from audio stuff, which is a challenge on Android in general) for the first time was pretty impressive. Even given unlimited resources, I’m not sure I’d choose to go down the 2 native apps route - automatic feature parity across platforms is a pretty killer feature. If you were building something like Snapchat where I guess things like app startup time and performance on budget devices are important, I can see why you’d choose to though.
- pjmlp 7y agoHaving been there, I hope to never touch Cordova or Ionic ever again. Most of those apps are perfectly doable as PWAs.
- yesimahuman 7y agoThat’s too bad, Ionic with Capacitor (and React) is much better and fully supports PWAs.
- RcouF1uZ4gsC 7y ago> Secondly (and this can be seen as both a flaw and an advantage), both Flutter and Dart come from Google. The good part of it is that Google is a tech giant, and if they want to maintain something, they have the resources and manpower to do it. The bad part is that while Google is known to introduce useful tech and services, it’s also known to kill off or retire them when they’re deemed obsolete. I think over time the crippling of Google’s developer initiatives because of this perception will cost a lot more than all the money saved from all the retired services.
- wstrange 7y agoI think the risk of Flutter getting cancelled is very remote. Google knows they have a winner on their hands. Flutter is the UI framework for Fuschia. It is picking up huge momentum [1]. The support for native apps and web[2] is still immature, but promising. Flutter brings the joy back into UI development. No messing with CSS, tables, etc. - "everything is a widget" makes for a very composable framework that is super fun to use. [1] https://redmonk.com/sogrady/2020/02/28/language-rankings-1-20/ https://redmonk.com/sogrady/2020/02/28/language-rankings-1-2... [2] https://flutter.dev/web https://flutter.dev/web
- mkl 7y agoI don't see any reason Google wouldn't cancel Fuchsia at a moment's notice. It's been consuming their resources for years and is far from launching in a product, and Google happily cancels even established well-used products.
- SlowRobotAhead 7y agoI don’t know why people tried to hide your post. Yes, it’s entirely plausible that Fuchsia is killed in favor of Android evolution not revolution. Plausible, but i wouldn’t put odds on anything. LUCKILY, for me because i really like Flutter, I think it hits critical mass soon and wouldn’t matter if Google killed Fuchsia.
- 7y ago
- wstrange 7y agoCached article: https://webcache.googleusercontent.com/search?q=cache:4HEVGPuxZ3kJ:https://altkomsoftware.pl/blog/flutter-dart-quickly-build-mobile-app-without-losing-much-hair/+&cd=2&hl=en&ct=clnk&gl=ca https://webcache.googleusercontent.com/search?q=cache:4HEVGP...
- mmastrac 7y agoUsing Dart in flutter feels like Google was trying to avoid tossing away a bunch of pre-existing work by finding a purpose for it somewhere. It's Lars' sorta Java, sorta Javascript personal project and it just doesn't have any sort of design to it. Dart's failure in the web space showed that there wasn't any real demand for it - it just wasn't better enough. I realize they can't use Java, but this is a weird horse to tie themselves to.
- refulgentis 7y agoIts a really, really good language - there's links in another post to programming usage ranking blogs, Dart has spiked over the last year, and they note "for languages, frameworks lead adoption"
- sebe 7y agoThey certainly did find a new purpose for Dart outside of it being used in parts of their Ads platform, but Flutter, when is was the chrome experiment called sky, first started out using Javascript. The chrome guys decided to move on and look at several language before going with Dart, Swift may have been an option, if it was opensource at the time. Seems a reason for Dart's failure in the web space was mobile. Lar gave a talk last year about his and Kasper iot startup https://www.toitware.com/ https://www.toitware.com/ he mentions why dart didn't make it into chrome, saying "then the whole mobile shift happen and there was no room for extra stuff in chrome" https://youtu.be/mPna6D21Eqg https://youtu.be/mPna6D21Eqg
- deleted 7y ago[deleted]
- skybrian 7y agoGoing with a less-popular language without a killer app yet has its advantages. When you're making a new UI platform it's helpful if you can ask the language team to make changes to the language for you. Once a language is in use in many places, you can't do that anymore. Apple did this too when they wanted a language that was compatible with Objective C. And this is how JavaScript got started, after all.
- mqus 7y agoI tried out flutter in the past few weeks and it seems really great, especially compared to the android framework. Dart also seems to fit in really well. But I do have some criticism for dart. While it's nice that they moved to a static types, they still made every single type nullable. So e.g. if you get a boolean in your function, be aware that it can be true, false and also null. I have my problems with java having nullable objects, but having the primitives also be nullable? Well, I'm pretty much a beginner, so maybe there are better ways and I still don't know them. But afaik, they weren't mentioned in the brief Dart intro on the flutter page. Dart does also have some cool things, though: Extensions (for adding interfaces to existing types), explicit getters, async/await and lots of syntactic sugar. Building your widget-tree in dart sometimes looks like a declarative style similar to xml, but far more concise, except that it's really imperative, which is really cool. No long Component a = new Component(); a.setOnClickHandler(xyz); a.setColor("green"); b.add(a); chains anymore!
- wstrange 7y ago> they still made every single type nullable NNBD is almost here: https://github.com/dart-lang/language/blob/master/accepted/future-releases/nnbd/feature-specification.md https://github.com/dart-lang/language/blob/master/accepted/f...
- cletus 7y agoSo this article [1] matches my own recollection. Like many projects that originate from Google, it always struck me as a solution looking for a problem. The first "problem" was Javscript. At one presentation about this I recall that Lars Bak (IIRC) took quite a beating about DArt, just in terms of the questions asked, to the point that someone had to point out just how much he'd accomplished (ie V8). This was, in essence, an appeal to authority. I recall the Ads PA basically stepping in to save the project. I can only speculate why but my best guess is the AdWords TL woke up one day and decided to rewrite AdWords in Dart (as he allegedly had with GWT some years before). But all that's pure speculation. The second "problem" that Dart solved was using the same code on client and server, something Google is inexplicably obsessed with (eg GWT). I don't know what caveats came with Dart but GWT had plenty (eg for many years it wasn't possible to use the same protobuf classes on client and server). I believe the intent with Dart was, at one point, to run natively within Chrome (the article mentions Dartium). This worked out really well for vbscript. No one wants to write different languages for different browsers. Again, I speculate here, but my strong suspicion is the Chrome team killed the idea of shipping a Dart VM in Chrome and that was the end of that. Maybe it's just me but TypeScript just seemed far more sane. So... Flutter. I don't know why a UI library needs to be language-specific but it strikes me as a bad idea. Now, the counterpoint is that Flutter is an SDK And more akin to, say, React Native (albeit with significant architectural differences) but I don't think it started that way. :UI frameworks, libraries and SDKs just don't seem to be in Google's wheelhouse (as opposed to, say, infra, which very much does). I can only speculate as to why but my best guess is Google engineers (disclaimer: Xoogler) can't see passed something as an engineering problem, so much so that they take on philosophies no one asked for or needed (eg same code on client and server), which come with a huge cost and no tangible benefits. [1]: https://insights.dice.com/2019/03/27/fall-rise-dart-google-javascript-killer/ https://insights.dice.com/2019/03/27/fall-rise-dart-google-j...
- sebe 7y ago> my strong suspicion is the Chrome team killed the idea of shipping a Dart VM in Chrome Yeah in a video last year, Lars said "then the whole mobile shift happen and there was no room for extra stuff in chrome" https://www.youtube.com/watch?v=mPna6D21Eqg&feature=youtu.be&t=502 https://www.youtube.com/watch?v=mPna6D21Eqg&feature=youtu.be...
- dragonsh 7y agoI think Flutter now can survive without google. It has enough developer momentum behind it and it’s unlike react native a bolt on solution to somehow make it work. It might fit Facebook’s case (although they abandoned it themselves in favour of native speaks volumes about it). But I think keeping in sync changes in API, hardware device drivers and new interactions across different platforms and device will still be nightmare and in general it will play catch up with native. It can be seen in the number of issues opened on flutter project on GitHub [1]. Hopefully there is some support from different platforms so it remains reasonable choice and perform well compared to native. Also it’s declarative UI paradigm is good and even SwiftUI is doing the same. I had concern about this project earlier although personally I looked at Dart just because it’s developed by Lara Bak the person who transformed google by giving them V8 engine in chrome. Earlier dart could not take off because no one wants dartvm in browsers except chrome. It might not have succeeded in replacing JS from browser but Flutter is dart’s killer platform and it is very much focused now on becoming a language focused on user interface programming. So I think dart will survive beyond google. [1] https://github.com/flutter/flutter/issues https://github.com/flutter/flutter/issues
- SlowRobotAhead 7y agoDart replacing JS would be an interesting timeline but not one we’re in for at least short term. I also had concerns about Dart/Flutter at first but they almost entirely went away a week after starting. It’s just really friendly. As far as Flutter is concerned it’s awesome you can see the Dart objects that build the Flutter widgets, the language itself is good and getting better, I’m just really happy we went this direction.
- ddxxdd 7y ago>But I think keeping in sync changes in API, hardware device drivers and new interactions across different platforms and device will still be nightmare and in general it will play catch up with native. It can be seen in the number of issues opened on flutter project on GitHub [1]. Hopefully there is some support from different platforms so it remains reasonable choice and perform well compared to native. I am an optimist; I have high hopes for the future of mobile development. Specifically, I hope that the developers who develop AndroidOS and iOS will metaphorically bend over backwards to make Flutter compatible with those operating systems. After all, isn't it in Apple and Google's best interest to make mobile development as painless as possible?
- Razengan 7y agoIf most of my focus is on Apple platforms (iOS, macOS, tvOS, watchOS, and possibly soon the rumored arOS), I would rather pick SwiftUI over any other framework. Though at its early stage, as with all new Apple tech, you will still be losing your hair. Hopefully there's only a few months to go until a substantial increase in its stability (and documentation.)
- SlowRobotAhead 7y agoYea, if you are Apple only; go for SwiftUI... but who can afford to be Apple only? I think there are a billion apps that no one cares about because developers have forgot about trying to solve actual problems in favor of “we have an app”. For us, it was “learn once, write anywhere” for react, or “write once and actually use everywhere” for Flutter. Native wasn’t even a question for the size of the team on this latest project. We make money by solving problems; not launching some app built with some language
- saagarjha 7y agoI would note that trying to write an app at this point without UIKit to fill in the holes that SwiftUI currently has would be foolhardy.
- izacus 7y agoThe issue with SwiftUI is that you can't just have "most" of your focus on Apple platforms. You need to have _all_ of the focus on Apple platforms because you can't run it anywhere else. With Flutter you have all of your focus on most of of the smartphone market practically for free which makes a massive difference in your addressable market.
- Barrin92 7y agoMy personal experience with it was as someone who had never developed for mobile or the web before, and I have to say I really appreciated it. Dart itself is very simple to pick up basically as you write. It feels like the most generic 'algol family' language imaginable, in a good way. The widgets itself that the framework provides are very complete and make inuitive sense. This was a big differentiator for me compared to my modest experiences with react a while ago. As someone who doesn't live in the world of UI and end-user software at all react was not easy for me because I had to learn javascript and css and html and so on. When the last thing you've built UI wise is Java desktop apps ten years ago that's not easy. Flutter felt much more like a traditional desktop framework in how high-level and complete it is.
- zerubeus 7y agoWhy Flutter over React Native can anyone answer this question?
- SlowRobotAhead 7y agoIt was easy for me. I know almost no JavaScript. I know C and asm and python. So... looking at the two, guess which one looked better to me? The code for Dart just makes sense. It’s not beholden to JS or XML or HTML or CSS. It just does it’s own thing. If you are heavily invested in JS, I bet there are aspects of Flutter that are still appealing, but if your aren’t invested in JS, I see no reason to get in just for React sake.
- saagarjha 7y ago> I know almost no JavaScript. I know C and asm and python. So... looking at the two, guess which one looked better to me? I fail to see your point; surely Dart was a new language for you as well?
- pdr2020 7y agoI assume he means that in selecting between two languages, with that given lang background, he made a preference choice of Dart. As a counterpoint, we have whole swathes of JS engineering teams building new mobile apps and would select react-native / Typescript (and where possible Expo) over Dart.
- thsowers 7y agoFWIW, and this is just my personal experience, but I find Dart to be very similar to Typescript, and we have JS engineering teams building out new mobile apps in Dart ;)
- footweebole 7y agoAs a JS engineer with experience using react I can say that Flutter/Dart is so much easier from a development perspective then react-native. I've done a little bit of swift development as well and the ease/speed of development is comparable. Maybe react-native is easier if you don't know react but for me it seems to keep only the worst parts of react and forcing you into using a lot of components for ui that I found to be poorly documented.
- canada_dry 7y ago> You’ll find the complete app code here [1] Leads to an empty repository. [1] https://github.com/asc-lab/personal-insurance-flutter-poc https://github.com/asc-lab/personal-insurance-flutter-poc
- witek1902 7y agoYes, our mistake. Tomorrow we added full code to this repo.
- matt2000 7y agoHN: I won't use anything Google makes, they always shut stuff down. Also HN: I'm all in on Go. HN: Learn a new language every year, it's easy and worth it even the language isn't useful for anything. Also HN: I won't learn a new language that would allow me to double my mobile dev productivity because someone told me it was bad 8 years ago.
- detaro 7y agoIt's almost as if HN is a community made of different people with different opinions and not a singular entity.
- libria 7y agoThis isn't about who likes what, it's about inconsistent reasoning. If Google creating a language is reason to believe it will die, why does that apply to Dart and not Go? This assumes you've observed the much higher popularity for Go and lack of it for Dart here on HN (and most elsewhere).
- nl 7y agoGo is used at a bunch of major companies outside Google. Dart is only used in Flutter (and apparently Fuchsia). Dart overlaps in goals almost completely with Typescript which is heavily used multiple teams within Google. Switching Flutter to Typescript is something I could easily see happening if Google wanted Flutter to be truly popular.
- dragonwriter 7y ago> Dart overlaps in goals almost completely with Typescript As I see it, that's not all that true. Now, it's true, that it's non-native use competes with TypeScript in domain and shares some implementation method details in that domain (e.g., both are languages that rely on compilation to JS in the web domain), but the goals clearly aren't the same. TypeScript's goals are basically limited to static typing and source compatibility with modern JavaScript (that is, it is an goal to be a typed superset of JS.) Dart has a wide array of different goals, including being a typed replacement for JS that is not limited in its other goals by being source-compatible with JS.
- fmakunbound 7y agoDo I need to use Dart in order to use Flutter?
- skybrian 7y agoYes, the Flutter API is a bunch of libraries written in Dart.
- thsowers 7y agoYes. More info about why is here: https://flutter.dev/docs/resources/faq#why-did-flutter-choose-to-use-dart https://flutter.dev/docs/resources/faq#why-did-flutter-choos...
- pjmlp 7y agoYes, Flutter is Skia + an UI framework written in Dart. You can also get Skia + whatever you want and get your own "Flutter". Currently they still have a better experience to sell regarding code reloading, but competing frameworks are upping their game by adding similar capabilities to their developer toolchains.
- The_rationalist 7y agoIn other words, flutter is unoptimised chromium, minus the features.
- meerita 7y agoI find Flutter and Dart horrendous for apps. So many lines of code, so many things to check. I much preffer Swift approach or web approach is way more interesting.
- animalnewbie 7y agoHow's xamarin? Anybody with experience here?
- smt88 7y agoHaven’t used it myself, but a dev I really respect loves it. With better handling of null in v. 8, C# is legitimately one of he best mainstream languages.
- Mertax 7y agoUse it quite often and enjoy it. Biggest reason is because I love C#/.net. Only recently been using Xamarin.Forms, which seems to finally be getting to a pretty mature state. They’ve made it a lot easier to jump in/out of Xamarin.Forms and Xamarin native within the same app. Also recently added Hot-reload features to compete with flutter. However, Flutter feels like it’s ultimately going to take over this space for “native” cross platform development. More momentum and less baggage. I have noticed Xamarin seems to be better about incorporating community feedback since flutter became its primary competition. Flex layout, Shell/route based navigation, etc. seem like responses to flutter features. Xamarin is great for C# fans but probably won’t win over many others outside of that with flutter as the alternative.
- nmfisher 7y agoBuggy and unstable. I spent quite some time investigating Xamarin vs Flutter for my app, and ended up choosing Flutter simply because Xamarin was so unreliable. No regrets whatsoever. There's no two ways about it - Flutter has already won the battle. In fact, it hasn't just won the battle, it's already sitting in a spa celebrating its victory with bottles of champagne.
- pjmlp 7y agoLet me guess, using Xamarin from Mac.
- throwmeback 7y agoI had an opposite experience with Xamarin.Forms - I loved my time with it. A deployed commercial app I made is in the stores for a year now. No idea about Flutter though.
- sandGorgon 7y agoOver the past two weeks I have seen Shopify, Flipkart, Microsoft Office, Coinbase and others officially throw their weight behind React Native. I'm also seeing the Expo.io project (ready made starters for React Native) mature to production quality extent. At this point, I'm seeing a massive production scale behind React Native which doesn't exist in the Flutter world. Plus the elephant in the room - React. How do you compete against that ? Incidentally, Flutter was inspired by React. At this point, if I had to take a bet - React Native would win against Flutter definitely. There will still be a massive Java/Kotlin userbase...but I don't see why Flutter will exist in a even-Microsoft-Office-is-using-React-Native world.
- pjmlp 7y agoMicrosoft is not only using React Native, they are the main contributors to React Native on Windows and macOS. React Native is also one of the reasons why WinUI core components are all going to be C++, instead of a mix of C# and C++.
- 3PS 7y agoNot super related to the article, but I had to get this off my chest. Suppose you use VSCode on Windows to write a Flutter app targeting the Surface Duo. In that case, you would be using a Microsoft editor running a Google SDK on a Microsoft operating system, targeting a Microsoft distribution of a Google operating system. We've not only come full circle, we've gone in loops.
- h8hawk 7y agoI've worked on Dart and Flutter last year on a startupish project. I can say flutter is amazing. It got good ideas from react architecture (eg: managing state and declarative UI) and add many good things like very rich and well designed API. writing UI in language and without other markup language like XML is amazing. You also save a lot of cost to developing in parallel for multiple platform's. Dart is also a pleasant language, here are some pros and cons about language. pros: 1- Everything is object. (no more inconsistencies like Java primitives, null and generics) 2- It has very well designed generics and you can access generic type in run time. 3- Good Type inference. 4- Has powerful facilities for asynchronous programming.(eg: async await, coroutines ,...) 5- Not overall bad or complex type system. Compare to Golang or java dart's type system is vastly superior. some cons: 1- Everything can be null (null is also object). 2- Lack of Union and algebraic data types. 3- Lack of python's like tuple.(eg: (1,'string')) 4- I personally dislike C-style type definition and mandatory semicolon (eg: int foo=23; rather than foo : int=23 )
- thosakwe 7y agoAs for nulls, non-nullability is currently in the works: https://github.com/dart-lang/language/blob/master/accepted/future-releases/nnbd/feature-specification.md https://github.com/dart-lang/language/blob/master/accepted/f...
- slimsag 7y agoserious question: how effectively can things like non-nullability be bolted onto a language after it and a large part of its ecosystem has been created? I see the plan to allow libraries to opt-in and migrate that way.. but I wonder how long that migration will take and if it will ever actually be completed?
- kuprel 7y agoIsn't a tuple just a const List? Also there is a set union function: https://api.flutter.dev/flutter/dart-core/Set/union.html https://api.flutter.dev/flutter/dart-core/Set/union.html
- hota_mazi 7y ago> The bad part is that while Google is known to introduce useful tech and services, it’s also known to kill off or retire them when they’re deemed obsolete. Do you know any company that doesn't retire a product once it's deemed obsolete?
- dgellow 7y agoBasecamp has a policy against retiring projects with users: https://basecamp.com/about/policies/until-the-end-of-the-internet https://basecamp.com/about/policies/until-the-end-of-the-int...
- ternaryoperator 7y agoMost enterprise IT vendor. IBM in particular will support obsolete products for decades (e.g. OS/2). It's part of the reason managers feel comfortable writing them big checks b/c they know that if they make a bet on the technology they will still be able to get support many years later.
- hota_mazi 7y agoDart - Is dynamically typed at the core - Has no support for nullability - Has old school syntax for constructors, semi colons In other words, Dart on the wrong side of history for pretty much every single important feature for programming languages in 2020. Even C# looks more modern than Dart from a design perspective, and C# is fifteen years old.
- pjmlp 7y agoAnd you weren't counting the matury of the eco-system.
- brabel 7y ago- Dart 2 has a sound type system and the compiler has been receiving lots of optimisations based on types since then (several years now). So this is no longer true. - that's currently true but in the next release (at least that's what the Dart team have been working on for the past several months) it will have nullable types just like Kotlin. - That's a strange criticism. Dart has excellent constructor syntax, I don't know a language that is more flexible with constructors. e.g. class Person { String name; int age; Person(this.name, this.age); String toString() => "Person($name, $age)"; } main() => print(Person("Joe", 40)); Looks pretty good compared to most other languages?!
- krzat 7y agoThe fun starts when you want to have final field that needs to be calculated in the constructor.
- filleduchaos 7y agoSo do that in the initializer list?
- hopia 7y agoDart has some annoying traits that hurt productivity with it. For example, the lack of union types or some kind of sealed classes is fairly annoying when the language is actually statically typed. There's some work being done to overcome this but so far no solution has seen the daylight in practice.
- tomduncalf 7y agoIs there a good example of a great, native feeling Flutter UI? I just downloaded a couple of random “Flutter gallery” type Apps from the iOS App Store and both of them have animations and text rendering that feel “wrong” (and somewhat janky in the case of the animations). This may reflect more on the development of those particular apps than the framework though, hence my asking - in my experience, React Native does a pretty good job of feeling “native” by default in most cases. Not saying users would necessarily care so much, but I’m interested regardless - I wonder if there have been any studies/anecdotes into how sensitive users are to “details” like animation etc. in terms of engagement.
- bsaul 7y agothat's the question i keep asking everytime there's a thread about flutter being great, and so far i haven't received any answer. my intuition is that flutter is used mostly for business apps made of forms and lists, where expectation in terms of graphical performances are very low.
- pdr2020 7y agoI'd agree with that assessment. I'm also open to being pointed toward a productionized Flutter app that feels native in the same way as some other x-platform solutions manage to exhibit. It's difficult to sift through the existing live examples.
- fauigerzigerk 7y agoI don't think so. I believe Flutter is the new Flash. They are clearly trying to attract the "brand first" marketing crowd by stressing fast graphics rendering, animations, full customization, etc. I bet we're going to see a flood of Flutter based retail, fashion, food, sports, motor and lifestyle apps very soon.
- krzat 7y agoThat's Xamarin. Flutter is better at implementing custom UI, like stuff that can be seen on dribbble.
- tapejek 7y agoThe process of creating websites and mobile apps can be greatly simplified with wordpress themes https://www.templatemonster.com/wordpress-themes.php https://www.templatemonster.com/wordpress-themes.php. Ready templates are designed by professional designers. Patterns can also be used for mobile apps.
- divan 7y agoFlutter is the best thing that happened to the UI development in the last decade or even two. Before Flutter, if I needed to build a simple app (couple of screens and network requests), there were no real option except of outsource it to the mobile app development studio. After discovering Flutter I've built and published my first app in 3 days while watching initial Flutter tutorials. Since then, making mobile apps for my projects has become such a pleasant experience, that I'm now trying Flutter Web as a substitute to the madness of JS/HTML/CSS ecosystem, and I'm quite impressed with a result. It's still in Beta, but the development experience is so much smoother. At the same time, a lot people still don't know what Flutter even is, so having it in your arsenal is a huge competitive advantage at the moment.
- jiofih 7y ago> there were no real option React Native, Xamarin, Ionic, and a ton more?
- aabbcc1241 7y agoThe parent commenter doesn't by into the "madness of javascript", maybe also against c#?
- divan 7y agoAll those solve the "two codebases" problem by piling levels of complexity one on top of another. It's fire-sure way to make developers unhappy and code unmaintainable in the long run. React Native was the best shot in this market, but adding the worst UI framework in the history of software – typesetting markup language (HTML), set of global classes for styling with magic words like "!important" (CSS) and hackish scripting language designed under pressure from Sun in 2 weeks (Mocha, renamed to Javascript) - on top of the already complicated stacks yielded all sorts of problems: from dependency management hell to unforgivably slow UI. Even AirBnB – the largest React Native shop over there – abandoned it altogether and returned to native iOS/Android development. My own experience working with React Native project for 1.5 years (with ClojureScript added on top for coolness) just reassured me that 5 layers of complexity is worse than 1 layer :) Flutter design is so sick, that unless I'm writing own native plugins, I don't even touch iOS/Android layers. So it's basically single layer of complexity from the perspective of the developer and it's a game changer in this field.
- loftyal 7y agoI wouldn't discount React Native. Microsoft and Shopify are now fully committed to it, and Facebook is committed to fixing the architecture issues that made Airbnb leave it in the first place. https://www.ideamotive.co/blog/what-to-expect-from-react-native-in-2020 https://www.ideamotive.co/blog/what-to-expect-from-react-nat... https://reactnative.dev/blog/2019/06/12/react-native-open-source-update https://reactnative.dev/blog/2019/06/12/react-native-open-so...
- wruza 7y ago“Without losing your hair” Future common data boilerplate. Qt/gtk-style app init boilerplate. Routing boilerplate. Future builder boilerplate. Homepage title state boilerplate. Setmapsfordicts boilerplate. DTOs. Widget scaffold. Step builder boilerplate. New policy subject(?). Complex handwritten setters and validators. How on earth is that not losing your hair? Can’t we just drop a list view, few controls on a form, attach field formatters, and then write a simple controller that implements a part of a table view delegate and a save method? What’s wrong with modern ui?
- scalatronn 7y agoYou don't have to do that. you can write everything in one file if you want. But when you introduce some architecture you always have some verbosity
- tarkin2 7y agoI tried Flutter a year or two ago after coding Android and iOS apps (to a lesser extent) for years and years. The dev experience was lightyears ahead of Android. Dart was nice fit. I came upon some edge-cases where Flutter's API seemed immature. But as far as quickly getting apps/prototypes out there, there was no competition. My main roadblock: the UI was centered around Material design. To use the iOS widgets, which looked good, it seemed you need to put a load of if statements to use the iOS widgets instead - and this felt hugely cludgey. I'll reiterate what another poster said: if your business depends on apps, go native. Flutter will get you to 90 or 95% really quickly but it's probably that 5% that gives you an edge. I'd use Flutter when apps are of secondary importance to the business, and when we need an iOS and Android app, and I want it done without spending huge amounts of effort.
- Okawari 7y agoI work for a little web-development shop that does the occational app on the side, mostly if an existing customer are interested in having one developed, we don't employ any full time app developers. We have just decided to try out flutter for our next app project. We are close to being done with the actual app development, and it looks like we are going to be done way under budget, so we are very happy with the technology as it currently is. Before my time, we initially started app development using Cordova. It lined up well with existing expertise in the office as that what we work with most of the time. The apps turned out rather well except for reliability and building. These are by contract applications, so we make them, release them and don't revisit them unless we need to perform support on them. Changes in the web browser, particularity on iOS has broken these apps on several occasions where we have to go back and fix them. Some of these issues have been expected, such as when iPhone X came to market, but sometimes an update has broken something else, seemingly out of the blue. We decided to try out some new technologies as we we're not too impressed with Cordova and settled on Nativescript + Vue. Again due to expertise with vue as it is one of the technologies we utilize a lot in web projects. Pretty much all of the people who had been involved with the previous apps found it a better experience than Cordova. But in my opinion, it was also quite infuriating to work with. Hot module reloading never truly worked the way it should, we often had to quit and reload the app for changes to be correctly applied. It didn't end up as cross platform as initially thought. We had to make a lot of platform specific components for things we initially didn't think we had to, mostly because the shared options of components in their standard libraries we're not as good as we had hoped. We ended up spending way more time than initially thought wresling components into submission in order to get close to the design we initially envisioned, and we ended up compromising a lot on UI in order to make budget and deadlines. Performance was also something I we had to optimize a lot more for than initially planned. Animations and screen transitions would usually take a performance dive even though our views were very simple and did not really have much data in them at all. We struggled a lot to wrangle UI components into shape, hence why we felt we had to make so many components. And we encountered issues with very simple components such as images in list views not rendering if scrolled out then back in from views. For this next project I suggested we try flutter before committing more to NativeScript, and we have seen immediate value from this technology over any of the others we have tried. * We spend way less time on platform specific code, the reusable pieces look more consistent across platforms which means we spend less time tweaking them for either iOS or Android. I think that flutter using its own rendering technique is a serious boon to us who are just making cross platform apps as cheap as possible. * Any non standard UI component is often way less time consuming to develop in flutter as you don't have to write platform specific version of it. This has also let us cut down on external dependencies which we felt were necessary on Nativescript in order to implement some features in the allotted time available. This is something I think we will appreciate a lot over time, as NativeScript does not have the most active community and the potential work we will have to do to maintain components that may be abandoned by their original developer down the line. * Tooling works a lot better for flutter. Hot module reloading actually works(most of the time). Statefulness and these reload is not as smooth. Actual breakpoints and debugging is very nice. We could get that with Nativescript too, but only in the javascript code, not for the templates which were written in XML. And if something went wrong on the "native" side, it would be like a black box to us which we could not truly inspect our way into. Flutter allows us to follow the stack deep into any widget. * When you have to write native code for Flutter, you at least get the help of the tooling built for native platform development, as opposed to NativeScript where you declare that in javascript. It is very seldom needed for the kind of projects we've been doing however so I have no great insights here. I'm very apathetic towards Dart as a language. It is entirely inoffensive. I felt like I could work in it without even trying to learn it, and I think I have spent at most an hour or two hours to look into and learn the more dart specific language features. I am not that much of a fan of how to deal with JSON data and the dynamic type in there. Dynamic feels a bit accident prone but other than that, Dart as a language gets less on my nerves than some of the more common and frankly way more tedious web related programming languages I have to use daily for work. As far as the kind of work we're doing, Flutter is great
- vips7L 7y agoOutside of flutter, how it's darts performance compared to other languages?
- nojvek 7y agoHow does Flutter compare to React Native? I haven’t used either but previously my go to framework was React Native since I have a ton of JS experience.
- scalatronn 7y agoMy React Native experience is very limited, but RN lacks of widgets. With Flutter you get complete package of material and apple widgets to create UI. Also RN is quite laggy on Android
- senthil_rajasek 7y agoThis is a garbage software. I wasted 2 hrs installing / reinstalling this trash and it was complaining about licenses. Untested unstable software... Never going anywhere near this pile of shit.
- senthil_rajasek 7y agoI am unfairly getting downvoted. I downloaded and installed this software and spent hours to fix the errors. Running flutter doctor is recommended in their "Getting Started" page to check the sanity of the install. But I kept getting the same "license status unknown" error after multiple installs /uninstalls in various order. Their GitHub issues page has this issue as closed. If this is the state of a simple install I dread to venture any further into actual development. This will be a complete waste of developer's time and resources. I am merely sharing my experience. Do not waste your time trying the flutter / stutter / sputter.
- sebe 7y agoIf you're running windows, someone found this worked and allows them to run flutter doctor --android-licenses https://github.com/flutter/flutter/issues/16025#issuecomment-468958533 https://github.com/flutter/flutter/issues/16025#issuecomment... If you just want to try out flutter, I wonder if you can avoid the android stuff by just running on ios and when they are ready the desktop and the web.
- senthil_rajasek 7y agoThanks for your response. Unfortunately, that solution is a dud. It does not work. flutter doctor is looking for the sdkmanager in an outdated directory. The point is not "googling" for fixes, the point is this software is not a well maintained software if I have to spend hours to just "Get started..." Developers, abandon this piece of crap. Android sdkmanager tool not found (%LOCALAPPDATA%\Android\Sdk\tools\bin\sdkmanager). Try re-installing or updating your Android SDK, visit https://flutter.dev/setup/#android-setup https://flutter.dev/setup/#android-setup for detailed instructions.