我如何区分提供相同 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,
)
我有四个供应商,它们都向同一个 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,
)