A friend of mine recently got into Flutter and liked it a lot, although his main concern was the lack of clear "conventions" (as he said it : "it's awesome but it's hard to find out what's the best way of doing something"), what are your thoughts on this ?
Yes, absolutely. I am actually going to answer this in two parts.
First, Flutter is still in beta (currently beta release 3 I believe).
I am guessing that the Flutter team is racing to complete a number of issues that need to be addressed (e.g., in terms of missing widgets or libraries, enhancing or providing key features like accessibility and internationalization, tackling performance targets etc.). And since they are a fairly small team, that means that things like documentation and best practices may not be as comprehensive as they should be.
That said, I have been seeing an incredible number of resources popping up -- from a full-set of new codelabs to a free Udacity course to a growing list of YouTube Videos and Shows from Flutter team developer advocates.
If I had to guess, I would say that developer evangelism is a huge item on their list and that we will start seeing a lot more content/guidance coming out over the months leading up to the official v1.0 release.
Second, Conventions are often the byproduct of usage, and we need more usage.
What I mean is that people who write the middleware, libraries, APIs and platforms may not always know how those get used by developers. Conventions are often driven by best practices derived from widespread usage -- and in that sense, my hope is that we will see more conventions defined later in 2018 because organic usage of Flutter is trending upwards.
My best advice for right now (and in fact, this is what I do and plan to do more of) is to sift through the open-source examples to understand how various things are being implemented, and learn by duplicating and then customizing those for your needs. The awesome-flutter repo is a wonderful source for open-source community apps as well.
That said, I will leave you with two observations.
First on coding conventions. I do think the Flutter team has done a great job with providing a built in formatter that automatically reformats code to align with specific code conventions. If you work with distributed teams, or if you share code with others, having an objective formatter is great because it results in code that looks familiar and consistent to everyone (even if your inner control-freak is incensed by their indentation count).
Second, on design conventions. I think this is what you are interested in and the challenge I foresee is that Flutter is aiming to be a universal app framework that appeals to web, Android, iOS and other mobile platform developers. And each of those domains/developers comes with some baggage on design conventions established within those domains -- that now have to either translate into this realm, or be overcome and new ones learnt to be productive. And that may be the most interesting and valuable thing that comes out of organic community contributions to this discussion -- ways in which we can unify our thinking around this new platform by bringing best practices from environments we are familiar with, while understanding the strengths & weaknesses of this one.
Hope that helped
Awesome answer, it definitely helps, I'll forward this to my friend !
We're a place where coders share, stay up-to-date and grow their careers.
We strive for transparency and don't collect excess data.