TextSelectionTheme 迁移
摘要
#控制 Material 组件中选中文本外观的 ThemeData
属性已移动到其自己的 TextSelectionTheme
中。这些属性包括 cursorColor
、textSelectionColor
和 textSelectionHandleColor
。这些属性的默认值也已更改为匹配 Material Design 规范。
背景
#作为更大的 Material 主题更新 的一部分,我们引入了一个新的 文本选择主题,用于指定 TextField
和 SelectableText
组件中选中文本的属性。这些属性取代了 ThemeData
的几个顶级属性,并将其默认值更新为匹配 Material Design 规范。本文档介绍了应用程序如何迁移到此新 API。
迁移指南
#如果您当前正在使用 ThemeData
的以下属性,则需要将其更新为使用 ThemeData.textSelectionTheme
上的新等效属性
之前 | 之后 |
---|---|
ThemeData.cursorColor | TextSelectionThemeData.cursorColor |
ThemeData.textSelectionColor | TextSelectionThemeData.selectionColor |
ThemeData.textSelectionHandleColor | TextSelectionThemeData.selectionHandleColor |
迁移前代码
dart
ThemeData(
cursorColor: Colors.red,
textSelectionColor: Colors.green,
textSelectionHandleColor: Colors.blue,
)
迁移后代码
dart
ThemeData(
textSelectionTheme: TextSelectionThemeData(
cursorColor: Colors.red,
selectionColor: Colors.green,
selectionHandleColor: Colors.blue,
)
)
默认值更改
如果您没有显式使用这些属性,但依赖于之前用于文本选择的默认颜色,您可以为您的应用程序添加一个新的 ThemeData
字段以恢复旧的默认值,如所示
dart
// Old defaults for a light theme
ThemeData(
textSelectionTheme: TextSelectionThemeData(
cursorColor: const Color.fromRGBO(66, 133, 244, 1.0),
selectionColor: const Color(0xff90caf9),
selectionHandleColor: const Color(0xff64b5f6),
)
)
dart
// Old defaults for a dark theme
ThemeData(
textSelectionTheme: TextSelectionThemeData(
cursorColor: const Color.fromRGBO(66, 133, 244, 1.0),
selectionColor: const Color(0xff64ffda),
selectionHandleColor: const Color(0xff1de9b6),
)
)
如果您对新的默认值感到满意,但存在失败的 golden 文件测试,您可以使用以下命令更新您的主 golden 文件
flutter test --update-goldens
时间线
#包含于版本:1.23.0-4.0.pre
稳定版发布:2.0.0
参考
#API 文档
相关 PR
除非另有说明,否则本网站上的文档反映了 Flutter 的最新稳定版本。页面上次更新于 2024-04-04。 查看源代码 或 报告问题.