方向更改处理是否像小部件的构建在Flutter 中使用更新的尺寸重新运行一样简单?

我之所以这样问,是因为在Android中,整个活动都被重建了,这就是为什么所有的信息都是通过意图发送的.

在设计小部件以处理方向更改或其他导致UI更改的更改时,有什么需要牢记的问题吗?

推荐答案

基本上是的!现在,更具体地说,MediaQuery小部件会监听方向/大小/布局的变化,并重建其子部件.这个小部件已经是MaterialAppWidgetsApp小部件的一部分,所以您可能不需要包含它.

如果希望小部件利用设备方向,可以使用MediaQuery.of静态成员访问包含设备方向的MediaQueryData.例如,一个简单的小部件在纵向和横向显示不同的文本(需要是MaterialAppWidgetsAppMediaQuery的子对象).

class MyWidget extends StatelessWidget {
  Widget build(BuildContext context) {
    final mediaQueryData = MediaQuery.of(context);
    if (mediaQueryData.orientation == Orientation.landscape) {
      return const Text('landscape');
    }
    return const Text('portrait!');
  }
}

Flutter相关问答推荐

Flutter FireRestore:如何从特定/实际领域获取数据

SupabaseFlutter 集成问题:无法更新行

出现异常.RangeError(RangeError(index):无效值:有效值范围为空:0).分度误差

material 3芯片,不能go 除输入芯片小部件上的轮廓

blocTest错误:没有从`when()`中调用方法存根

try 使用fl_Chart of Ffltter,但在导入它时遇到以下错误:Error:';TextScaler';is;t a type

如何管理枚举类型的阻塞事件?

无法在仿真器上运行Flutter 项目-文件名太长错误

在Flutter 小部件测试中找不到框中的AssetImage装饰

Flutter 数独网格

在参数为空时保持命名参数的默认值

我想在文本结束后显示分隔线.它会在第一行、第二行或第三行结束

无法使用 bloc 更新 ListView.builder 的特定时间

是否有可能减少代码的编写,例如:ref.read(countProvider.notifier) - 在构建方法中?

Cloud firestore:如何使用 map 对象创建和更新嵌套数组

Flutter 中出现错误空判断运算符用于空值

Future.wait() 中的 futures 可以顺序调用吗?

如何在 Flutter 中的页面加载上的 Listview 上应用自动滚动

参数类型Future>不能分配给参数类型Future>?

如何从 MemoryFileSystem 字节创建假 dart:io 文件?