Skip to content

use_dedicated_media_query_methods

v0.1.0 Warning Fix Widget Best Practices

This rule flags calls like MediaQuery.of(context).size and suggests using the dedicated aspect methods like MediaQuery.sizeOf(context) instead. The dedicated methods subscribe only to the specific property you need, so your widget does not rebuild when unrelated MediaQuery properties change.

MediaQuery.of(context) subscribes to the entire MediaQueryData. That means your widget rebuilds whenever any media property changes — orientation, padding, text scale, view insets, and more. If you only need size, using MediaQuery.sizeOf(context) ensures rebuilds happen only when the size actually changes. This is a significant performance win for widgets that appear in frequently-rebuilt subtrees.

See also: MediaQuery

class MyWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
// Subscribes to ALL MediaQuery changes
final size = MediaQuery.of(context).size;
final padding = MediaQuery.of(context).padding;
return SizedBox(width: size.width, height: size.height - padding.top);
}
}
class MyWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
// Only rebuilds when size or padding changes
final size = MediaQuery.sizeOf(context);
final padding = MediaQuery.paddingOf(context);
return SizedBox(width: size.width, height: size.height - padding.top);
}
}

To disable this rule:

plugins:
many_lints:
diagnostics:
use_dedicated_media_query_methods: false