【问题标题】:Global Variables in Dart: Singleton versus StaticDart 中的全局变量:单例与静态
【发布时间】:2021-08-19 15:28:38
【问题描述】:

当您想在 Dart 中定义全局变量以在程序中的任何位置读取和写入时,一般建议似乎是创建一个 Singleton 类,例如

class Globals {
    // Constructor boilerplate
    static final Globals _instance = Globals._();
    factory Globals() => _instance;
    Globals._();

    // Global variable
    int variable = 0;
}

然后您可以使用Globals().variable 读取值并使用Globals().variable = 1 写入。

然而,对于一个简单的静态变量来说,这似乎是可能的,例如

class Globals {
    // Global variable
    static int variable = 0;
}

使用Globals.variableGlobals.variable = 1 读写。如果我们运行一个简单的例子:

void main() {
   print(Globals.variable);
   Globals.variable++;
   print(Globals.variable);
}

返回

0
1

所以似乎是作为一个全局变量。我在 Flutter 的上下文中使用全局变量,我希望变量集合在整个应用程序中广泛可用和可调整。

那么使用单例和静态声明全局变量有什么区别?

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    Globals 不是好的编程,应该有人在基础课程中教过,Singleton 也好不了多少。这只是声明全局变量的一种更好的方式。见Why is Singleton considered an anti-pattern?

    因此,您的问题的字面答案是“无关紧要”。全局变量和Singletons基本相同,问题相同。

    此类问题的实际答案应该是不使用!!!

    如果您不知道如何在没有它的情况下管理程序状态,请继续阅读 state management in Flutter

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-12
      • 1970-01-01
      • 1970-01-01
      • 2011-05-12
      • 2013-11-12
      • 2022-01-28
      • 2015-05-24
      • 1970-01-01
      相关资源
      最近更新 更多