Flutter - 如何在按钮点击时刷新小部件?

Flutter - How to refresh a Widget on button Click?

我正在制作一个可以绘制加密货币图表的应用程序。我有一个这样的文件,它在其中呈现 btc/24h 的图表。我正在使用 chart_sparkline 包来绘制图表。

我有以下代码,但它在单击按钮时不起作用,我该如何解决这个问题?

import 'package:flutter/material.dart';
import 'package:tracker/renderchart.dart';

class Portfolio extends StatefulWidget {
    @override
    _PortfolioState createState() => _PortfolioState();
}

class _PortfolioState extends State<Portfolio> {
    Widget portfolioChart = RenderPortfolioChart(coin: "bitcoin", days: 1);

    @override
    Widget build(BuildContext context) {
        return Container(
            child: Column(
                children: [
                    portfolioChart,

                    const Padding(padding: EdgeInsets.only(top: 10.0)),

                    const Text("Hello, there!", style: TextStyle(color: Colors.white)),

                    const Padding(padding: EdgeInsets.only(top: 10.0)),

                    ElevatedButton(
                        onPressed: (){
                            print("updating chart");
                            setState(() {
                              portfolioChart = RenderPortfolioChart(coin: "ethereum", days: 1);
                            });
                        },

                        child: Text("ETH"),
                    )
                ]
            ),
        );
    }
}

基本上,elevatedButton 应该更新图表,但它在我的情况下不起作用,如何解决这个问题?

我修复了这个问题,我正在将 Portfolio 的构造函数参数传递给 _PortfolioState,这不会在下次更新值。我没有将这些值传递给 _PortfolioState,而是使用 widget.coinwidget.daysPortfolio class.

中提取数据

感谢这个 Whosebug link: