【问题标题】:Is there a Widget which allows to switch implementation depending on platform?是否有允许根据平台切换实现的小部件?
【发布时间】:2018-02-13 15:47:32
【问题描述】:

我正在尝试找到一个可以返回特定平台(Cupertino 或 Material)实现的小部件,例如CupertinoPageScaffold vs ScaffoldCupertinoNavigationBar vs AppBar

在我创建抽象的 PlatformWidget 之前有类似的东西吗?

【问题讨论】:

    标签: dart flutter


    【解决方案1】:

    没有任何小部件可以将 Material 和 Cupertino 设计集成到一个地方。

    但老实说,你不应该这样做。他们的 API 可能完全不同。而且您将很难将两者融合在一起。 尤其是考虑到你可以做一个Scaffold.of(context).openDrawer() 例如。

    建议使用Theme.of(context).platform 来选择要实例化的布局。并创建两个单独的布局,每个操作系统一个。

    【讨论】:

    • 我注意到有些类共享 API,而另一些则不同。我正在寻找一种方法来避免重复 UI 和自动化一些平凡的任务,例如在 iOS 上将 Text() 上的样式设置为 body1。我已经创建了抽象小部件来处理它只是我很惊讶在 SDK 中没有这样的东西
    • some mundane tasks e.g. on iOS set style on Text() to body1 但你不必这样做。有一个名为 DefaultTextStyle 的小部件,您可以将其设置为您想要的任何内容。
    • Flutter 希望不惜一切代价避免“兼容库”。做这样的事情会倒退。
    猜你喜欢
    • 2020-06-04
    • 1970-01-01
    • 1970-01-01
    • 2011-06-27
    • 2021-09-26
    • 2021-11-14
    • 2015-12-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多