在Google的移动框架Flutter中,您可以使用Cupterino(iOS)小部件或Material Design(Android)小部件构建您的应用。这意味着您必须构建应用程序两次才能创建与每个设备一致的两种不同样式 - 一次使用Cupertino小部件为iOS构建,然后再使用Material Design小部件为Android构建。有没有办法自动主题这些小部件来定制每个平台,所以我可以避免两次构建Flutter应用程序?
答案 0 :(得分:2)
是的,当然这是可能的。您可以使用继承的Theme
widget获取MaterialApp
的{{3}}对象。
ThemeData
有ThemeData
,可用于为不同平台提供不同的小部件。在您的 Android - iOS 案例中,它看起来像这样:
@override
Widget build(BuildContext contect) =>
Theme.of(context).platform == TargetPlatform.iOS ? // ternary if statement to check for iOS
CupertinoAlertDialog() : // Cupertino style dialog
AlertDialog(); // Material style dialog
如您所见,您可以使用property called platform
检查您的应用程序正在运行的平台。
这显然也可以应用到图标等。
如果您正在使用Android Studio或IntelliJ IDEA的 Flutter插件,您还可以使用 Flutter Inspector 动态切换TargetPlatform
, ie 模拟 Flutter SDK在 iOS 上运行即使你在 Android 而反之亦然。