If your use case is "typical" like 90% of the apps out there, I think there's no reason to invest in native anymore (I did native Android a while back, so I can't comment if you're coming from iOS). Flutter has very strong developer productivity (such as "press Cmd+\ to auto-reload"), wide array of plugins (now with official Firebase plugins). Heck, somebody wrote a "Visual Basic" for Flutter (https://flutterflow.io/) using Flutter.
The real problem with Flutter is it's tendency to attract bottom-of-the-barrel cheapskate customers. I don't want to double down on my earlier mistakes and box myself into lower-paid 10% of already lower-paid (compared to iOS) Android development market.
OK let's put a constraint: multiplatform. Take Flutter out of the equation, then what do we have: RN, Ionic, Kotlin Multiplatform... what else?
- RN, Ionic: errr I'm still having nightmares reading JS/TS code
- Kotlin Multiplatform: not stable yet?
Qt can even be deployed to embedded systems if that's your jam.
Most apps are budget constrained - doing 2x native over flutter budget doesn't get you 15% better UX. It probably doesn't even give you two working apps in the budget. And getting to them you're still likely 2x bugs and worse UX because of the time spent redeveloping common shit.
If you're not budget constrained, have a team that can execute better UX without flutter, and this matters to your app - go for native. But there's so many scenarios where it doesn't.
Dual native also gets you better portability to new platforms branching off of iOS and Android — for example most native iOS apps can be turned into suitable AR apps for visionOS with two clicks and it does most of the UI adaptations required for you. Flutter won’t be able to do that for years if ever.
It's not productivity, it's cost. If an app costs twice as much to build for "20% better UX" then that's ridiculous. You can release earlier and spend half the difference on bugfixes/polish/additional features based on what you see in the wild.