【问题标题】:"#define" equivalent in Dart/Flutter?Dart/Flutter 中的“#define”等价物?
【发布时间】:2022-01-24 06:19:20
【问题描述】:

我想知道 Dart/Flutter 中是否有 #define short_expression long_expression 的方法?

例如,而不是打字

MediaQuery.of(context).size.width
// or 
Locale.of(context).translate("x")

在每个构建函数中,我们都可以

#define MQWidth MediaQuery.of(context).size.width
// or
#define Lt(x) Locale.of(context).translate("x")

然后在每个构建函数中使用它?

【问题讨论】:

  • Dart 没有宏或提供自己的预处理器。您总是可以自己在代码上运行预处理器或使用代码生成。

标签: flutter dart


【解决方案1】:

宏。生成式编程又名元编程通常不是解释语言中的事情。最接近 dart 中的生成式编程概念的是static metaprogramming,它正被积极追捧。您目前可以通过build_runner 在 dart 中实现源代码生成,我相信您已经在 json_serializableretrofit 等包中看到了这一点。但它离完美还差得很远,需要大量的工作才能实现微不足道的目标。而且它只适用于某些场景,很遗憾你给出的例子不是其中之一。

所以,答案是。你不能这样做,至少现在是这样。

但是,如果它们在整个地方都被过度使用,为什么不把它们分成函数呢?我知道您仍然必须在任何地方传递上下文,这与您的预期相比有点混乱。但如果这是您的目标,它仍然会使代码更短。

希望这能回答您的问题。干杯!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-03
    • 1970-01-01
    • 2017-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-04
    • 2012-06-29
    相关资源
    最近更新 更多