【问题标题】:Passing BuildContext to non builder methods将 BuildContext 传递给非构建器方法
【发布时间】:2020-12-03 01:08:58
【问题描述】:

我想知道传递我们在 build 方法中收到的 BuildContext 对象是否是个好主意?基本上将它传递给非构建器方法的地方。

例如,在 Provider 包的情况下,我可以将它传递给我的 ViewModel。这是好事吗?

还是会产生影响?

【问题讨论】:

    标签: android ios flutter web dart


    【解决方案1】:

    传递BuildContext 通常是个坏主意。

    这个对象不是用来传递的。如果您需要BuildContext,请改为创建一个新的(使用自定义StatelessWidgetBuilder)。

    不这样做可能会导致难以调试的错误(例如导致ProviderNotFoundException),创建一个新的BuildContext 而不是重复使用现有的可以提高性能。

    【讨论】:

    • 我遇到的具体问题是我有一个 ViewModel 类,它需要访问此上下文以显示小吃栏。但是这个 ViewModel 不是一个小部件类。那我该怎么办?
    • 不要让您的 ViewModel 显示快餐栏。而是让它可观察,并让 View 监听对象并在需要时显示小吃条
    • 即使这样我也需要访问上下文,我从哪里获得它?
    • Builder/StatelessWidget
    猜你喜欢
    • 2020-02-18
    • 1970-01-01
    • 2011-06-12
    • 1970-01-01
    • 2012-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-09
    相关资源
    最近更新 更多