我有一个名为home.dart的主页,在这里我定义了其他页面,如下所示(我使用的是底部导航栏):'
late final List<Widget> _pageOptions;
@override
void initState() {
appBarColor = colors[4];
initializeCoins();
_pageOptions = [
ProScreen(Values.coins.toString()),
CatScreen(),
NotScreen(),
FavScreen(),
HomeScreen(),
];
super.initState();
}
'
我正在从API接收一些数据,并在home. dart的appBar中显示它,它工作正常。问题是,当我尝试在ProScreen中显示相同的内容(将我在appbar中显示的相同变量传递给ProScreen的构造函数)时,它不工作,而是显示其默认值(0)我该怎么办?
x一个一个一个一个x一个一个二个x
2条答案
按热度按时间ws51t4hk1#
我想这个应该可以
创建一个准备页面的异步函数(initPages),它将等待Values初始化,然后执行setState并创建页面
就像这样:
p5fdfcr12#
这是因为你传递的值和你想的不一样。当你下载数据时,它第一次就能正常工作,因为你使用的是接收到的数据,但是当你创建新的屏幕时,你使用的是你之前创建的静态值0。
在执行
Values.coins.toString()
时,您显式声明这是Values类的新“示例”。尝试返回int,表示你正在接收
Future<int> initializeCoins() async {
和return jsonDecode(response.body)['user']['score']
,这样你就可以做类似的事情: