“Brother will kill brother, Spilling blood across the land
Megadeth – Holy Wars… The Punishment Due
Killing for religion, Something I don’t understand”
There are a number of “holy wars” in software development; coding styles, version control, architectural frameworks, editors, integrated development environments, programming languages, and so on and so forth. The reason many of these conflicts is because, in general, there is no single correct answer. Everybody can be right.
So, what is the “right” or “best” integrated development environment (IDE) to use for Flutter development? The answer to this question lies pretty much within each developer and what makes them the most productive. I can’t tell you which IDE is the best or right Flutter development tool for you, but I can share which IDE I use and why.
Cutting to the chase, I use Visual Studio Code for my Flutter development. I initially used Android Studio but recently switched. Why? I like VS Code’s clean, uncluttered user interface, its robust extensibility, and customization features, excellent performance, community support, documentation, and Flutter/Dart integration.
Moving to VS Code was a fairly significant change for me. When I began my journey as a Flutter developer, I used Android Studio because I was familiar with Android Studio from previous Android development projects. The Flutter getting started documentation while saying any editor could be used, gave an implied preference to Android Studio by providing detailed information on how to begin your journey building Flutter apps by installing Android Studio and the Flutter plugin. In retrospect, I think starting to learn Flutter and Dart while using Android Studio was good for me because I was able to focus on Flutter and Dart while feeling at home in the comfort of Android Studio. Besides, all the reference material and videos on the web and from the Google Flutter team all used Android Studio.
Then, early in the summer of 2019, I started hearing more and more about Flutter developers using VS Code for their Flutter projects. I took a brief look at VS Code but didn’t see anything striking that would cause me to change from using Android Studio. Furthermore, I firmly believe that a Flutter developer needs to be knowledgeable in the use of both Xcode and Android Studio. Having a basic understanding of and competency in these IDEs is needed from time to time for various tasks. It can also be a crucial skill when debugging or investigating platform-specific issues as well as required for building some Flutter packages. I thought, why introduce a third IDE into the mix when Android Studio was a perfectly acceptable solution?
I continued along in my opinion of VS Code and used Android Studio. As with all tools, Android Studio wasn’t perfect, but I’d become accustomed to its many warts and inconsistencies until I barely noticed them anymore. Yet, I was seeing more and more cases of Flutter developers using VS Code. Bloggers, Vloggers, and even Google Flutter team developers were switching over to VS Code. I sat back and took notice when Andrea Bizzotto, one of my favorite Flutter GDEs, started using VS Code. Was I missing out on something by not using VS Code?
So, I took another look at VS Code. My first impression, as I looked at it again, was that it had progressed quite a bit since my last evaluation. The Flutter components in Android Studio always felt a little forced to me, a second cousin coming to stay for a while. I wrote it off as the growing pains of a new development framework being added to the family. Many elements did work themselves out, but others remained. Android Studio was changing to support Flutter, Kotlin, Java, and traditional Android app development. Not all of the components applied to Flutter development, which made them either a distraction or worse a nuisance.
VS Code, on the other hand, had a flexible architecture that allowed it to be configured for different purposes easily. After watching several YouTube videos and reading articles from Flutter developers about their VS Code recommendations, I configured my VS Code and began a new Flutter project. A first, I wasn’t impressed because I felt lost and missed the features I came to depend on in Android Studio. But I persevered and pushed on, forcing myself to stop and figure out how to do Flutter development the VS Code way. What they say about “muscle memory” is correct, or at least it is for me, learned habits can be hard to change. Many of the Flutter development features I loved and came to depend on in Android Studio seemed to be missing from VS Code.
But as I forced myself to learn how to use VS Code for my Flutter development, I was finding it easier and more intuitive to use. The UI felt fresh and clean, allowing me to focus on coding. While both IDEs support keyboard shortcuts, I found myself using and being more productive using them in VS Code.
VS Code, as with any tool, hasn’t been perfect. Most of my frustration or confusion has turned out to be my ignorance of how to use the features of VS Code. I did find a bug using the Flutter Outline feature, a tool I heavily rely upon when searching through and reading Flutter package code. I wrote up and submitted a bug report and saw my bug report was reviewed and verify in less than eight hours and scheduled to be fixed in the next release.
IDEs are a personal preference. Which IDE you choose should come down to which one makes you the most productive. Look and feel of the UI and the features available can be a big part of that decision. After re-investigating VS Code, I’ve made the decision this is the right IDE for me.