gpt4 book ai didi

Flutter:如何在 Cupertino 主题中主题化 Material 小部件?

转载 作者:行者123 更新时间:2023-12-04 07:49:22 24 4
gpt4 key购买 nike

我有一个 Flutter 应用程序,它使用 Android 的 Material 主题和 iOS 的 Cupertino 主题。但我使用 Card小部件,这是一个 Material 小部件,在两个主题中。现在我在 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,
...
)
...
),),
......
如您所见, Card小部件的主题使用 cardTheme在 Material 中 ThemeData ,但是没有对应的 cardThemeCupertinoThemeData .所以在 iOS 上 Card s 只使用他们的默认主题。
那么我如何主题像 Card 这样的 Material 小部件在库比蒂诺主题?

最佳答案

遇到了我尝试使用的相同问题 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,
),
),
);
}

关于Flutter:如何在 Cupertino 主题中主题化 Material 小部件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67055802/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com