【问题标题】:Is it possible to auto-theme widgets in Flutter?是否可以在 Flutter 中自动主题化小部件?
【发布时间】:2018-11-26 04:44:38
【问题描述】:

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

【问题讨论】:

    标签: flutter


    【解决方案1】:

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

    ThemeData 有一个property 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 并且反之亦然

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-24
      • 1970-01-01
      • 1970-01-01
      • 2018-04-28
      • 1970-01-01
      • 2017-01-05
      • 1970-01-01
      • 2021-11-28
      相关资源
      最近更新 更多