【问题标题】:How can I differentiate between Providers that provide the same class如何区分提供相同类的提供者
【发布时间】:2021-05-08 01:28:38
【问题描述】:

我有四个提供者,它们都向同一个小部件提供挑战类的实例。 它们是不同的挑战,但我不知道如何区分提供者,所以我想知道是否可以为提供者命名。

【问题讨论】:

标签: flutter flutter-provider


【解决方案1】:

其实不能,这是provider最大的缺点,你可以用riverpod代替,同一个作者,但是比普通provider有一些优势。

这就是 provider 和 riverpod 的作者所说的。

它使提供者模式更加灵活,从而允许支持常见请求的功能,例如: 能够拥有多个相同类型的提供者。

【讨论】:

    【解决方案2】:

    没有。虽然您可以让多个提供者共享同一类型,但小部件将只能获取其中一个:最近的祖先。

    相反,您必须明确地为这两个提供者指定不同的类型。

    代替:

    Provider<Challenge>(
      create: (_) => 'Something',
      child: Provider<Challenge>(
        create: (_) => 'SomethingElse',
        child: ...,
      ),
    ),
    

    喜欢:

    MultiProvider(
    providers: [
        Provider<ChallengeOne>(create: (_) => Something()),
        Provider<ChallengeTwo>(create: (_) => SomethingElse()),
        Provider<ChallengeThree>(create: (_) => AnotherThing()),
      ],
      child: someWidget,
    )
    

    【讨论】:

      猜你喜欢
      • 2021-08-16
      • 1970-01-01
      • 1970-01-01
      • 2020-09-24
      • 1970-01-01
      • 2019-04-04
      • 2015-03-20
      • 1970-01-01
      • 2020-08-29
      相关资源
      最近更新 更多