1. 10

React Native challenger, using Dart

  1.  

  2. 5

    There’s something creepy, unpleasant and unhuman in all these late Google technologies. Dart is just a frankeinsteinian mix of two most popular languages: Java and Javascript. Even name is stupid - “Dart”. It has no community outside Google and is not supposed to have. This Flutter looks like it will always be alpha. All these docs websites with Material design (which looks like ultra-modernist plastic prisons, at least in desktop web) built from internal wiki pages look cold and dead. Everything is like Google+ or modern Google Photos.

    1. 3

      FWIW, I’ve only played with Flutter, haven’t used Dart beyond the learn-how-it-works phase, but seems a little harsh. It’s an evolution of JavaScript because way back when they first put it out there, it targeted the browser and needed to appeal to JS devs. It reminds me less of Java than of Kotlin or especially TypeScript, with more sugar and fewer typed-out type annotations than Java, and a little more light functional style than Java (like JS, not like Lisp). It has that lack of community outside Google because the industry decided to evolve JS instead while Google already had enough internal investment (from the AdWords area mainly I think) to justify continuing to evolve Dart; if you’re saying Dart was “not supposed to have” community it seems inaccurate, since it was launched as a potential successor to JS. They do still put effort into making it adoptable, e.g. the site has good docs, tutorials, etc., there’s a solid playground with code completion (https://dartpad.dartlang.org/), they give talks at all the Google events, and folks have e.g. helped me when I had setup issues trying it out. I think Flutter is actually used for AdWords mobile apps, and the ‘alpha’ may have a bit of the GMail long beta thing going on.

      There’s certainly complaints to have about Google, but to me, Dart just seems like one of the many perfectly likable technologies out there that hasn’t had the hockey-stick growth its creators might have hoped for (outside Google, so far). Could be sort of cool if it does.

    2. 2

      Flutter / Dart’s hot reload functionality is kind of amazing.

      1. 1

        Could you elaborate a bit on why (when compared to literally any other framework that supports it, such as Ember, React, Vue, or Mithril)? This is something I’ve honestly just come to expect at this point from a decent SPA framework.

        1. 1

          I’m not aware of JS engines being able to hot-patch live objects with new versions of methods. With Dart’s hot reload as you modify and add methods the new code is deployed to object instances that keep their data. It makes for a pretty smooth iteration flow.

          1. 1

            I think it’s that it provides it in a mobile context. React Native does too, if I’m reading right, but default iOS and Android toolchains don’t, so mobile devs are a lot less used to seeing their code live in seconds on-device than Web devs.

            1. 3

              Android does support this since Android studio 2.3, it’s called instant run.

              https://developer.android.com/studio/run/index.html#instant-run

        2. 1

          Here are some scattered thoughts from when I spent a Saturday a few months back just seeing how Dart worked and throwing a toy screenful of widgets together on my phone: https://news.ycombinator.com/item?id=14433308

          Short version: I liked hot reload, and the IDE-ish luxuries were great, especially for learning it. It had some surprising odd bits and bumps setting it up, detailed in the link. I’m not a mobile dev, just playing around, so don’t give my reactions too much weight.

          1. 1

            AFAIK it should be [native looking] not [native]. There are two meanings fit native. First is that code is compiled to binary native to the CPU - Dart is not compiled. Second is that it uses native controls for look and feel - Flutter draws everything itself. Second meaning in this context is more useful. It may look native, but every system update requires work to make it look native again. Not saying that it can always be slightly off, especially in feels department.

            React Native uses native controls, so they have somewhat overlapping use cases, but one can do what other cannot.

            Also what’s with the AI tag?

            1. 4

              As far I understand it, Dart is indeed compiled — see here under “how does Flutter run my code on Android?” and the related iOS entry at https://flutter.io/faq/. I think it’s fair to label this “native”, even though it doesn’t use the OS’s native UI controls.

              1. 2

                Thanks I stand corrected.

              2. 1

                iOS still forbids JITs and interpreters (except builtin javascript) so it should be AOT compiled if it targets iOS.

                When talking about UIs, “native” usually means “uses OS-native widgets”. For example, react-native usually considered “native” because it uses such widgets despite using javascript for UI logic. GTK is not native on Windows but native on Gnome desktop. I don’t understand obsession for AOTing UI glue code on mobile devices (especially iOS).

                1. 1

                  Interpreters are allowed on iOS, but only for code included with package or user created.

                  It’s more an obsession for AOTing everything, because most code bases are mostly homogenous. So for example the computation heavy code will be written in the same language as the UI glue code. For better or worse.

                2. 1

                  Also what’s with the AI tag?

                  Fat fingers at my end, looking for an android tag when posting from a mobile. Apols