flutter 如果我用消费者提供者 Package 一个小部件,为什么全局主题化不起作用?

gxwragnw  于 2023-01-27  发布在  Flutter
关注(0)|答案(1)|浏览(147)

在这里,我使用二级颜色作为深橙色在全球主题使用cololrscheme,但当我 Package 的小部件与消费者,那么它不会遵循全球主题,并应用一些随机颜色,为什么会发生这种情况?
下面是我的代码与消费者它没有适用于我的颜色主题没有消费者它将适用。

leading: Consumer<Product>(
        builder: (context, product, child) => IconButton(
          icon: Icon(
              product.isFavorite ? Icons.favorite : Icons.favorite_border),
          onPressed: () {
            product.toggleFavorite();
          },
          color: Theme.of(context).colorScheme.secondary,
        ),
      )
jk9hmnmh

jk9hmnmh1#

每当Product对象的值发生变化时,Consumer小部件都会重新构建其子小部件。当Consumer小部件重新构建时,它会使用新的上下文对象重新构建其子小部件。这个新上下文对象的主题可能与您预期的主题不同,这就是颜色不匹配的原因。
您可以使用Builder小部件 Package Consumer,这允许您传入子小部件要使用的特定上下文对象。因此,您可以使用Builder Package 代码,并从父小部件传入上下文。

leading: Builder(
builder: (BuildContext context) {
return Consumer<Product>(
builder: (context, product, child) => IconButton(
icon: Icon(
product.isFavorite ? Icons.favorite : Icons.favorite_border),
onPressed: () {
product.toggleFavorite();
},
color: Theme.of(context).colorScheme.secondary,
),);
 })

相关问题