【问题标题】:Flutter- Is it safe to use static variable for userIdFlutter-对userId使用静态变量是否安全
【发布时间】:2019-01-24 11:18:19
【问题描述】:

我想知道可以做还是不应该做。 例如我创建了这样的类:

class Utils {
    static String uid;
}

并在用户登录时获取用户的uniqueId 并设置如下:

Utils.uid = uniqueId;

在那之后,只是绕过。 假设我有标签并从第一个标签开始,这里得到uid,当转到第二个标签时,使用uid 做一些事情。 这是我不应该做的事情还是可以? 任何帮助表示赞赏!

【问题讨论】:

    标签: flutter


    【解决方案1】:

    我真的不能说它是对还是错,因为这取决于它,但我正在做的以及我看到其他几个人所做的是将用户相关信息(如用户 ID)存储在 SharedPreferences一旦用户登录应用程序。

    希望这对您有所帮助。

    【讨论】:

    • 感谢您的评论,我一定会检查的!
    【解决方案2】:

    没有。一般来说,在 Flutter 内部,一切都应该来自一个小部件。无论是配置、API 数据、身份验证,还是您能想到的任何东西。

    虽然您可以使其与单例/静态属性一起使用,但您会损失很多。通过将所有内容包装在一个小部件中;它确保每当数据发生变化时,一切都会正确地重新加载。

    在这种情况下,您需要使用InheritedWidget 公开用户信息。

    More informations here on how to use them.

    【讨论】:

    • 感谢您的评论。我不认为我理解正确。所以让inheritedWidget 持有uid 并被基本上所有其他小部件继承(因为uid 几乎在任何地方都使用)。每次我需要 uid,然后从继承的小部件中获取。就像一个小部件版本的单例。我理解对了吗?
    • 就是这样。不同之处在于,每当InheritedWidget 的值发生变化时,所有依赖于该继承的小部件都会自动更新。
    • 现在我明白了。非常感谢!
    【解决方案3】:

    现在您可以使用 Providers 在页面和小部件之间共享数据 提供者只重新加载必要的小部件,这些小部件比静态属性保持最佳性能

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多