flutter 如何根据程序中的其他更改更改“ElevatedButton”的颜色?

3npbholx  于 2023-03-13  发布在  Flutter
关注(0)|答案(2)|浏览(170)

我有一个提供者值如下:

var book = Provider.of<Books>(context, listen: false);

和一个上传按钮,如下所示:

ElevatedButton(
                style: ElevatedButton.styleFrom(
                  backgroundColor: book['imageUrl'] == ""
                      ? Theme.of(context).highlightColor
                      : Theme.of(context).primaryColor,
                  ),
                ),
                onPressed: () async {
                    setState(() {
                      book['imageUrl'] =
                          uploadURL!;
                    });
                  }
                },

我想做的是修改上传图片时按钮的背景色,book['imageUrl']会在setState()函数中设置,但是上面的解决方案不起作用!
我该怎么做呢?

bnlyeluc

bnlyeluc1#

使用notifyListeners()更改图书的状态

vawmfj5a

vawmfj5a2#

您可以将Consumer设置为:

Consumer<Books>(
  builder: (context, book, _) => ElevatedButton(
    style: ElevatedButton.styleFrom(
      backgroundColor: book.imageUrl == "" ? Theme.of(context).highlightColor : Theme.of(context).primaryColor,
    ),
    onPressed: () async {
      setState(() {
        book.imageUrl = uploadURL!;
      });
    },
  ),
);

相关问题