I think you all got there yourselves through your conversation, but I’ll comment here to make it explicit. This might also provide insight into how the team thinks about the learning resources we make.
This architecture guidance wasn’t really written for experienced app developers who are familiar with Flutter, because 1) they likely understand that there’s nuance in everything. And 2) there’s nothing in this guidance that will be unfamiliar to them. MVVM isn’t a new concept, using repositories isn’t a new concept, etc.
Big, complex apps with many developers working on the same codebase will also not likely find this guidance super helpful. They probably have unique requirements and have to adjust accordingly.
These docs we’re written for folks who are either A) new-ish developers that aren’t confident in architecting an app themselves, or B) experienced developers new to Flutter that want some kind of starting point to understand how Flutter apps are generally architected. (B is the real target audience FWIW)
In order to write these docs at all, we had to be opinionated. It’s not feasible to document every possible architecture that could be used in any given situation.
That said, I do think we made the best decisions that are most generally useful to largest number of people, and can be most easily modified to fit your needs.
I wouldn’t read too into the choices we made about packages or specific APIs in the compass_app example.
For example, If I was starting to build an app today for production use, there’d be way more streams and way less ChangeNotifiers. I simply prefer thinking in Streams, while there are many people on the team that prefer CN. Regardless, CN is the best choice to trigger UI updates for this project because we want to teach people the underlying platform and skills, not how to use a package.
It reminds me a lot of a question that folks used to ask constantly in the ReactJS world: “Should I learn React first, or focus on learning JavaScript?” The answer from any experienced developer was a resounding “learn JS first!”