【问题标题】:What is the third input parameter in the Flutter ProxyProvider builder functionFlutter ProxyProvider builder函数中的第三个输入参数是什么
【发布时间】:2020-02-22 09:59:23
【问题描述】:

给定一个如下所示的 ProxyProvider,

MultiProvider(
  providers: [
    ChangeNotifierProvider<MyModel>(
      builder: (context) => MyModel(),
    ),
    ProxyProvider<MyModel, AnotherModel>(
      builder: (context, myModel, anotherModel) => AnotherModel(myModel),
    ),
  ],

builder 函数中的第三个输入参数 (anotherModel) 是什么? documentation 没有解释它。如果和返回的函数是同类型的,为什么是入参呢?

【问题讨论】:

  • 来自official docs: "所有builder的变体都将接收BuildContext作为第一个参数,之前构建的值作为最后一个参数。这个之前构建的值默认为null,除非指定了 initialBuilder - 在这种情况下,它将是 initialBuilder 返回的值。"

标签: flutter flutter-provider


【解决方案1】:

如果你有这样的 ProxyProvider:

ProxyProvider<MyModel, AnotherModel>(
  builder: (context, myModel, anotherModel) => AnotherModel(myModel),
)

正如 cmets 和 docs 中提到的,这些是参数值:

  1. context:这是BuildContext
  2. myModel:这是您传递给 ProxiProvider 的值,用作构建器返回值的输入。
  3. anotherModel:这是构建器的最后一个构建值。除非指定了 initialBuilder,否则第一次该值为 null

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-21
    • 2020-04-29
    • 1970-01-01
    • 1970-01-01
    • 2020-12-26
    相关资源
    最近更新 更多