CupertinoThemeData.brightness 现可为空

概要

CupertinoThemeData.brightness 现可为空。

背景

CupertinoThemeData.brightness 现被用于覆盖 Cupertino widgets 的 MediaQuery.platformBrightness。在此之前, CupertinoThemeData.brightness 为空时返回 Brightness.light

更改描述

此前 CupertinoThemeData.brightness 由 getter 实现:

Brightness get brightness => _brightness ?? Brightness.light;
final Brightness _brightness;

现在它是一个存储类型:

final Brightness brightness;

迁移指南

一般来说 CupertinoThemeData.brightness 很少会在 Flutter 框架层外用到。现在如果要检索 Cupertino widgets 的亮度,使用 CupertinoTheme.brightnessOf 代替它即可。

在此更改后,现在可以在 CupertinoThemeData 子类中覆盖 CupertinoThemeData.brightness 值来改变亮度。例如:

class AwaysDarkCupertinoThemeData extends CupertinoThemeData {
  Brightness brightness => Brightness.dark;
}

当有一个 CupertinoTheme 使用上述 CupertinoThemeData 时,所有受此 CupertinoTheme 影响的 Cupertino 类组件都将启用深色模式。

时间表

实现版本:1.16.3
稳定版本:1.17

参考资料

设计文档:

API 文档:

相关 issue:

相关 PR: