首页 文章

是否有可能在Flutter中自动主题小部件?

提问于
浏览
2

在Google的移动框架Flutter中,您可以使用Cupterino(iOS)小部件或Material Design(Android)小部件构建您的应用 . 这意味着您必须构建应用程序两次才能创建与每个设备一致的两种不同样式 - 一次使用Cupertino小部件为iOS构建,然后再使用Material Design小部件为Android构建 . 有没有办法自动主题这些小部件来定制每个平台,所以我可以避免两次构建Flutter应用程序?

1 回答

  • 2

    是的,当然这是可能的 . 您可以使用继承的Theme widget来获取 MaterialAppThemeData对象 .

    ThemeDataproperty called platform,可用于为不同平台提供不同的小部件 . 在你的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
    

    如您所见,您可以使用TargetPlatform constant来检查应用程序运行的平台 .

    这显然也可以应用于图标等 .

    如果您正在使用Android Studio或IntelliJ IDEA的Flutter插件,您还可以使用Flutter Inspector即时切换 TargetPlatform ,即模拟Flutter SDK在iOS上运行,即使您使用的是Android和 vise versa .

相关问题