No, marking widgets as const does not prevent them from rebuilding when inherited widgets they depend on (like Theme or MediaQuery) change. In Flutter, const widgets can still rebuild if they rely on inherited widgets that update.
Not exactly. While BlocBuilder rebuilds its immediate child when the state changes, deeper widgets will only rebuild if they depend on the changing state or inherited widgets. If those widgets don't reference the updated state or inherited data, they won't reflect any changes. So, the key is ensuring your widgets are correctly linked to the state or inherited widgets to trigger a rebuild when needed.
Not necessarily the best practice. Instead of wrapping widgets in additional BlocBuilders, ensure your widgets properly depend on the Theme by using Theme.of(context) or theme-dependent styles. This way, they will automatically rebuild and reflect changes when the theme updates, without the need for extra BlocBuilders.