在Google的移动框架Flutter中,您可以使用Cupterino(iOS)小部件或Material Design(Android)小部件构建您的应用 . 这意味着您必须构建应用程序两次才能创建与每个设备一致的两种不同样式 - 一次使用Cupertino小部件为iOS构建,然后再使用Material Design小部件为Android构建 . 有没有办法自动主题这些小部件来定制每个平台,所以我可以避免两次构建Flutter应用程序?
是的,当然这是可能的 . 您可以使用继承的Theme widget来获取 MaterialApp 的ThemeData对象 .
MaterialApp
ThemeData 有property called platform,可用于为不同平台提供不同的小部件 . 在你的Android-iOS案例中,它看起来像这样:
ThemeData
@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
如您所见,您可以使用TargetPlatform constant来检查应用程序运行的平台 .
这显然也可以应用于图标等 .
如果您正在使用Android Studio或IntelliJ IDEA的Flutter插件,您还可以使用Flutter Inspector即时切换 TargetPlatform ,即模拟Flutter SDK在iOS上运行,即使您使用的是Android和 vise versa .
TargetPlatform
1 回答
是的,当然这是可能的 . 您可以使用继承的Theme widget来获取
MaterialApp
的ThemeData对象 .ThemeData
有property called platform,可用于为不同平台提供不同的小部件 . 在你的Android-iOS案例中,它看起来像这样:如您所见,您可以使用TargetPlatform constant来检查应用程序运行的平台 .
这显然也可以应用于图标等 .
如果您正在使用Android Studio或IntelliJ IDEA的Flutter插件,您还可以使用Flutter Inspector即时切换
TargetPlatform
,即模拟Flutter SDK在iOS上运行,即使您使用的是Android和 vise versa .