【问题标题】:How can I specify a 'formula' while building widgets: flutter如何在构建小部件时指定“公式”:颤动
【发布时间】:2022-01-16 13:45:09
【问题描述】:

我在多个地方都有类似的东西(忽略实际示例)。当我对这些公式进行更改时,我需要在多个文件中进行更改。

SizedBox(
        width: parentPortHidden ? 0.01 : DevicePreferences.getViewPortWidth(context, Constants.defaultDeviceWidth) - 0.01,
        height: DevicePreferences.getDeviceHeight(context, Constants.getActualDeviceHeight) -
            DevicePreferences.getDeviceHeight(context, Constants.appBarRelativeHeight, Constants.appBarMinAbsHeight),
        child: CustomScrollView(

宽度和高度的值是用相同的公式计算的(这些不是常数)

也许这个问题和 this one 在 Flutter 中相当于 #define 的问题相同,但我不确定是否有其他解决方案,因为 #define 没有...

如果没有代码解决方案,最好使用什么“系统”来确保在需要更改这些公式的任何地方都进行更改?

【问题讨论】:

    标签: flutter


    【解决方案1】:

    您可以创建简单的函数来实现您的公式,如下所示:

    double f(bool parentPortHidden, double ViewPortWidth)
    {
      return parentPortHidden ? 0.01 : ViewPortWidth - 0.01;
    }
    

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    • @SmirnuX - 这不能解决我的要求。让我解释一下: double f(bool parentPortHidden, double ViewPortWidth) 假设我只有两个参数。如果公式发生变化并且具有更多/更少的参数怎么办,我仍然需要在任何地方更改调用函数,并且不会好很多。
    • 您可以创建类,该类将负责计算您的公式。例如,它可以包含像static double GetW() 这样的函数,这些函数将根据参数返回值,并提前传递给类。使用该解决方案,您必须将参数传递给类一次,然后只需调用class_name.GetW()。如果您想添加或删除参数,您只需更改将参数传递给类的代码片段。
    猜你喜欢
    • 2020-05-05
    • 2020-05-30
    • 2021-03-18
    • 2023-03-07
    • 2021-11-20
    • 2021-11-25
    • 2020-09-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多