在Flutter中对CupertinoApp和MaterialApp的使用感到困惑

时间:2020-05-08 08:20:04

标签: flutter

我正在学习Flutter,遇到了两种类型的设计MaterialApp和CupertinoApp。因此,我想知道是否要为android和ios创建一个应用程序,是否应该为MaterialApp为Android创建一个单独的应用程序,为CupertinoApp为iOS创建一个单独的应用程序?或者,如果说仅使用MaterialApp创建应用程序,那么该应用程序的ios版本会自动获得CupertinoApp吗?

2 个答案:

答案 0 :(得分:3)

材料小部件为iOS,Android和Web实现了材料设计语言。

Cupertino小部件根据苹果的《人机界面指南》实现了当前的iOS设计语言。

为什么要编写Cupertino应用?

Material设计语言是为任何平台(不仅仅是Android)创建的。在Flutter中编写Material应用程序时,它在所有设备(甚至是iOS)上都具有Material外观。如果您希望您的应用看起来像标准的iOS风格的应用,则可以使用Cupertino库。

从技术上讲,您可以在Android或iOS上运行Cupertino应用,但是(由于许可问题)Cupertino在Android上的字体不正确。因此,在编写Cupertino应用程序时,请使用iOS专用设备。

您将实现一个库比蒂诺(Cupertino)风格的购物应用程序,其中包含三个选项卡:一个选项卡用于产品列表,一个选项卡用于产品搜索以及一个选项卡用于购物车。

如果您想详细了解CupertinoMaterial。检查以下链接:

Cupertino and Material

您还可以使用名为flutter_platform_widgets的flutter程序包来检查您的应用在哪个平台上运行,并使用特定的小部件(“材质”或“库比蒂诺”)

此软件包链接为:flutter_platform_widgets

我希望这会有所帮助

答案 1 :(得分:0)

跨平台框架意味着它可以在多个操作系统中执行。这并不意味着它会相应地自动设计您的应用程序,这取决于开发人员。 您必须检查您的应用正在运行的平台,您可以使用简单的条件来做到这一点:

if(Platform.isIOS){
   return CupertinoButton();
} else if(Platform.IsAndroid) {
    return ElevatedButton();
}

或者您可以使用 flutter_platform_widgets 之类的包来帮助简化您的代码。