【问题标题】:Do we have to write the code twice in Flutter to export as iOS and Android?我们是否必须在 Flutter 中编写两次代码才能导出为 iOS 和 Android?
【发布时间】:2020-12-14 01:10:04
【问题描述】:

在 Flutter 中,MaterialApp() 和 CupertinoApp() 小部件分别给人以“Android”和“Apple”的感觉。我想构建一个为这两个操作系统提供服务的应用程序,但除了外观之外,大多数功能都是相同的。我是复制我的代码还是有办法只写一次就可以导出为 .apk 或 .ipa?

[MY EXAMPLE OF DUPLICATING CODE]
if operating_system == "android"{
  runApp(MaterialApp(some code here))
} else if operating_system == "ios"{
  runApp(CupertinoApp(same code as above))
}

【问题讨论】:

    标签: android ios flutter mobile


    【解决方案1】:

    答案取决于您需要达到的目标,

    您可以编写整个 UI 以匹配 Apple 的 ios,它会在 android 上毫无问题地运行,在 Android 的情况下也是如此,所以如果您需要为不同的用户个性化您的应用程序,这完全取决于您移动平台,那么您必须编写两个不同的 UI 实现(虽然不完全),或者您可以在所有平台上使用单个 UI 来侥幸

    【讨论】:

      【解决方案2】:

      对于 UI 是,对于大部分后端来说不是。

      如果您想要像 Button 这样的平台特定 UI,则必须检查平台,然后返回 Material WidgetCupertino Widget


      import 'dart:io';
      Platform.isIOS // Returns true on iOS devices
      Platform.isAndroid // Returns true on Android devices
      

      这篇中等帖子详细解释了如何做到这一点: https://medium.com/@mehmetf_71205/platform-specific-ui-with-flutter-7a4da3cc6ed

      以下是所有可用的 Cupertino(iOS) 小部件: https://flutter.dev/docs/development/ui/widgets/cupertino

      这里是所有可用的 Material(Android) 小部件:

      https://flutter.dev/docs/development/ui/widgets/material



      在 iOS 和 Android 上运行时,大多数 UI 行为都会由 Flutter 自动适应。 本文展示了 Flutter 自动执行的特定于平台的行为和适配: https://flutter.dev/docs/resources/platform-adaptations


      您的应用后端不需要特定于平台的代码。但是如果你想使用特定于平台的API,那么你将不得不编写特定于平台的代码。

      这篇文章将帮助您: https://flutter.dev/docs/development/platform-integration/platform-channels


      【讨论】:

        猜你喜欢
        • 2011-04-21
        • 1970-01-01
        • 2014-09-11
        • 1970-01-01
        • 2016-12-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多