didChangeMetrics method

void didChangeMetrics ()

Called when the application's dimensions change. For example, when a phone is rotated.

This method exposes notifications from Window.onMetricsChanged.

This StatefulWidget implements the parts of the State and WidgetsBindingObserver protocols necessary to react when the device is rotated (or otherwise changes dimensions).
class MetricsReactor extends StatefulWidget {
  const MetricsReactor({ Key key }) : super(key: key);

  _MetricsReactorState createState() => _MetricsReactorState();

class _MetricsReactorState extends State<MetricsReactor> with WidgetsBindingObserver {
  Size _lastSize;

  void initState() {
    _lastSize = WidgetsBinding.instance.window.physicalSize;

  void dispose() {

  void didChangeMetrics() {
    setState(() { _lastSize = WidgetsBinding.instance.window.physicalSize; });

  Widget build(BuildContext context) {
    return Text('Current size: $_lastSize');

In general, this is unnecessary as the layout system takes care of automatically recomputing the application geometry when the application size changes.

See also:

  • MediaQuery.of, which provides a similar service with less boilerplate.


void didChangeMetrics() { }