我正在使用 Cupertino 小部件,并且需要在本地覆盖我的全局 CupertinoTheme,并CupertinoTheme
为此目的使用小部件。我的用例是在图像顶部显示文本时强制使用一些“深色”主题,但问题很普遍。
在下面的示例中,我尝试更改一种文本样式的字体大小(从 42px 到 21px),但它没有应用:两个文本具有相同的大小(第二个应该是 21px 高)。
似乎CupertinoTheme.of(context)
没有读取覆盖的样式,与文档相反
后代小部件可以通过调用CupertinoTheme.of来检索当前的CupertinoThemeData
这是一个示例(可以在DartPad上测试):
import 'package:flutter/cupertino.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return CupertinoApp(
debugShowCheckedModeBanner: true,
theme: CupertinoThemeData(
brightness: Brightness.dark,
textTheme: CupertinoTextThemeData(
navLargeTitleTextStyle: TextStyle(fontSize: 42)
)
),
home: Home()
);
}
}
class Home extends StatelessWidget {
@override
Widget build(BuildContext context) {
return CupertinoPageScaffold(
child: Column(
children: [
Text(
'Hello, World #1!',
style: CupertinoTheme.of(context).textTheme.navLargeTitleTextStyle
),
CupertinoTheme(
data: CupertinoThemeData(
textTheme: CupertinoTextThemeData(
navLargeTitleTextStyle: TextStyle(fontSize: 21)
)
),
child: Text(
'Hello, World #2!',
style:
CupertinoTheme.of(context).textTheme.navLargeTitleTextStyle
),
),
]
)
);
}
}