flutter - 在 Flutter 中监听设备方向变化

我正在寻找一种方法来监听手机方向的变化,以便在手机为横向时隐藏某些内容。

我的布局目前仅按预期以纵向显示,但我希望我的应用在设备旋转到横向时执行某些操作,同时保持纵向布局。

我曾尝试使用 OrientationBuilder,但这仅在布局更改为横向时才有效。

我也尝试过使用 MediaQuery.of(context).orientation,但是一旦设备旋转,它会继续返回纵向,同样只使用布局方向。

最佳答案

您可以收听屏幕大小的变化,但 MediaQuery.of(...) 应该也能正常工作,并且应该在方向变化时重新构建您的小部件

https://stephenmann.io/post/listening-to-device-rotations-in-flutter/

import 'dart:ui';
import 'package:flutter/material.dart';

class WidthHeight extends StatefulWidget {
  WidthHeight({ Key key }) : super(key: key);

  @override
  WidthHeightState createState() => new WidthHeightState();
}

class WidthHeightState extends State
                       with WidgetsBindingObserver {
  @override
  void initState() {
    super.initState();
    WidgetsBinding.instance.addObserver(this);
  }

  @override
  void dispose() {
    WidgetsBinding.instance.removeObserver(this);
    super.dispose();
  }

  double width = 0.0;
  double height = 0.0;

  @override void didChangeMetrics() {
    setState(() {
      width = window.physicalSize.width;
      height = window.physicalSize.height;
    });
  }

  @override
  Widget build(BuildContext context) {
    return new Text('Width: $width, Height $height');
  }
}

https://stackoverflow.com/questions/54986748/

相关文章:

google-maps - 自定义 Flutter Google Map 中的中心位置按钮

flutter - 了解 Flutter didChangeDependencies 机制

flutter - 在 Android Studio 中运行和热重载 flutter 的问题(坏状态

android - 在 Flutter 的垂直列表中添加动态高度水平 ListView

architecture - flutter BLoC : Is using nested Stre

testing - 如何在 Flutter 中测试私有(private)函数/方法?

dart - 如何根据背景图像更改文本颜色 - Flutter

dart - StreamBuilder 抛出 Dirty State 说 Invalid Argu

flutter - 如何在 Flutter 中向 TextFormField 添加阴影

list - Flutter - 如何查询列表中的搜索项