exactly. Borland era OOP gui code was amazingly well thought out. The flaws in the flutter framework are soooo many, a lot of half baked things are made standard. Try to get 2-way scrollbars working decently (try to nest them, or go watch the video tutorials that supposedly explain how to do this - it was an absolute horror show). There are so many hassle factor things that one googles or searches the github for, find tons of other smart people beg for it with examples and use cases and just watch the team say they won't implement for some or other reason. But even the simplest thing, that when you create a component (say with mutable state) - you don't create one class to get one widget defined, noooo you have to create two, one stateful and one stateless. All of these little weird decisions that were made for bs reasons eventually add up to a ton of incidental complexity. Oh we made part immutable for "performance" reason, but the real reason is that people don't understand when to avoid functional style programming idioms. All the weird ways the layout system can bite you, the way they designed constraints being passed down and sizes passed back up - boy are they forcing you to do a lot of thinking about incidental complexity, and the different containers and how thy interact in ways you would not expect by default. The fact that you cannot on a per container basis disable overflow displays in dev (many people have asked for this). That silly debug ribbon your app gets until you disable it LOL who thought that was a good default. In the end though one can make it do a lot, and it is reasonably performant. But the pitfalls are many, and basic stuff that it doesn't solve well for you.