Kav*_*hao 4 flutter flutter-cupertino flutter-theme
我有一个 Flutter 应用程序,它使用 Android 的 Material 主题和 iOS 的 Cupertino 主题。但我Card在两个主题中都使用了 widget,它是一个 Material widget。现在我有以下代码main.dart
Widget build(BuildContext context) => PlatformProvider(
builder: (BuildContext context) => PlatformApp(
cupertino: (_, __) => CupertinoAppData(
theme: CupertinoThemeData(brightness: Brightness.light, ...)),
material: (_, __) => MaterialAppData(
theme: ThemeData(
brightness: Brightness.light,
primarySwatch: Colors.deepPurple,
cardTheme: CardTheme(
color: Colors.grey,
...
)
...
),),
......
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,该小部件在 Material 中Card使用了主题,但在 中没有相应的主题。所以在 iOS 上,s 只使用他们的默认主题。cardThemeThemeDatacardThemeCupertinoThemeDataCard
那么如何像Card库比蒂诺主题那样为 Material 小部件设置主题呢?
小智 10
遇到同样的问题,我尝试使用MaterialBasedCupertinoThemeData https://api.flutter.dev/flutter/material/MaterialBasedCupertinoThemeData-class.html但它没有正确尊重黑暗主题。最终,我找到了一个解决方案,如何同时将 MaterialTheme 与 CupertinoTheme 结合起来并正确应用深色/浅色主题:
@override
Widget build(BuildContext context) {
final Brightness platformBrightness = WidgetsBinding.instance.window.platformBrightness;
return Theme(
data: ThemeData(brightness: platformBrightness),
child: CupertinoApp(
theme: CupertinoThemeData(
brightness: platformBrightness,
),
),
);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1983 次 |
| 最近记录: |