Flutter as a framework is not the worst but far from best, it's very OO while trying to use reacts vdom model which just wants to be functional.
The biggest limitation of the platform is Dart - it's a horrible language that should have died once TS and ES6 became mature enough. And I've used dart back when it was supposed to be a JS killer shipped with browsers, used dartium to build a MVP for an app using Angular Dart durgin the betas.
Back then Dart was miles ahead in terms of tooling and JS the language didn't even have async/await - so I was singing it's praises. But the language stagnated and it's fundamentals with a nominal type system and a closed object model make the language so inflexible and full of boilerplate it's incredible. It's very much like Java (the language, without the powerful ecosystem) and people prefer Kotlin for frontend for a reason. C# is similar but they figured out that they need to build a lot of things in to the language to reduce the boilerplate so they are adding stuff like Records and pattern matching.
If you look at state management patterns in flutter there's probably 5-10 competing approaches all lacking in their own way and all severely hampered by how unexpressive dart is. Or how you deal with serialisation/immutability/etc.