Ask HN: Are you using Dart? What's it like? - hguhghuff
======
phillywiggins
I started with Flutter a year and a half ago after reading an article about
it.

Overall, I like working with Dart! Why? I feel very productive with the
language.

Pros:

    
    
      1. The Standard Lib is fairly complete and coherent. This makes it easy to learn and create reusable libraries that fit together in a larger ecosystem.
      2. Dart can run in a JIT mode and compiled mode. JIT mode is great for fast development cycles (Flutter Hot Reload or running tests), compiled mode is great for fast production apps.
      3. Built in primitives for async: Futures and Streams. This makes working with async code consistent and readable.
      4. Good tooling -- VSCode and IntelliJ plugins both offer high quality editing experiences, with type checking, refactoring, jump-to-definition, etc.
      5. Solid test package with very fast feedback. It also works out of the box with the IntelliJ test runner.
      6. Good package management. It's easy to pull libraries from the central registry (pub) or work with local versions of a dependency by simply pointing to the correct local directory. Easy to split your own apps into several smaller libs that depend on each other for separation as well!
      7. Strong typing with good type inference -- I've worked on large javascript and java apps, and I find strong typing really helps on bigger projects. Java has great tooling, but is notorious for repetition (I just told you it was a String!!! :P)
      8. Easy to share code between web and mobile projects. 50-70% code sharing according to folks at Google and AppTree.
    

Cons:

    
    
      1. Smaller community, less 3rd party packages. This can be a pro in some cases, as I've found the packages that are available tend to be of high quality.
      2. Might be missing Feature X from your favorite language (Kotlin  extension functions, Scala case classes & pattern matching, Idris dependent types, etc).
      3. For advanced cases, I don't love the way class constructors work... sometimes you have to provide an internal private constructor to make the language happy and external `factory` constructors for consumers.
      4. It sometimes feels like other languages might be moving a bit faster. For example, Kotlin is adding features at an incredible pace! That said, Dart2 is just around the corner and it sounds like the team is doing a lot of refactoring on a "Common Front End" to make moving faster in a safe way much easier.
    

Ok, getting a bit long now. Hope this was useful in some way!

