我如何区分提供相同 class 的提供商

How can I differentiate between Providers that provide the same class

我有四个供应商,它们都向同一个 Widget 提供挑战实例 class。 它们是不同的挑战,但我不知道如何区分提供者,所以我想知道是否可以给提供者命名。

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

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

It makes the provider pattern more flexible, which allows supporting commonly requested features like: Being able to have multiple providers of the same type.

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

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

而不是:

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,
)