我想找出AppBar文本的颜色:
import 'package:flutter/material.dart';
void main() => runApp(const MaterialApp(
home: MyHomePage(),
));
class MyHomePage extends StatelessWidget {
const MyHomePage({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
print(Theme.of(context).appBarTheme.foregroundColor); // null
print(Theme.of(context)
.colorScheme
.onPrimary); // Color(0xffffffff) - wrong: text is black not white
return const Scaffold(
body: Text('ok'),
);
}
}
字符串
我该怎么办?
2条答案
按热度按时间olmpazwi1#
当我们没有为
appBarTheme
提供任何主题数据时,它将默认使用textTheme.titleLarge
来获取颜色使用。字符串
titleTextStyle
记录如下如果此属性为空,则使用[ThemeData.appBarTheme]的[AppBarTheme.titleTextStyle]。
如果该值也为null,则默认值为整个主题的[TextTheme.titleLarge] [TextStyle]的副本,颜色设置为应用程序栏的[foregroundColor]。
xxe27gdn2#
当然,
Theme.of(context)
让你可以访问widget树中的当前主题。但是,在AppBar
文本颜色的情况下,它继承自主题中的AppBarTheme
或TextTheme
。要检索
AppBar
的文本颜色,您应该访问AppBarTheme
中的textTheme
属性:字符串
这段代码获取
AppBar
的textTheme
,然后从headline6
中检索颜色,这通常对应于AppBar
标题中使用的文本样式。appBarTextColor
将表示AppBar
文本的颜色。请记住,如果没有指定
headline6
,或者它是从其他源继承的,直接访问它的颜色可能会返回null,因此请确保在代码中优雅地处理这种情况。