gpt4 book ai didi

flutter - 通过MaterialPageRoute进行路由时,Flutter Page的数据未加载,但是热重加载是否正确加载了数据?

转载 作者:行者123 更新时间:2023-12-03 04:40:50 25 4
gpt4 key购买 nike

我正在构建Flutter应用程序,并且有一个页面,其中包含一个填充有数据的表。我像这样加载数据:

class _AccountMenuState extends State<AccountMenu> { {
List<Account> accounts;

Future<List<Account>> getAccounts() async {
final response = await http.get('http://localhost:5000/accounts/' + globals.userId);
return jsonDecode(response);
}

setAccounts() async {
accounts = await getAccounts();
}

@override
void initState() {
setAccounts();
super.initState();
}
}
热重新加载页面时,此方法可以正常工作,但是当我通过MaterialPageRoute路由到此页面时,
像这样: Navigator.push(context, MaterialPageRoute(builder: (context) => AccountMenu()));则数据不存在。
我想念什么?我以为每次页面加载时 initState()都会被调用?

最佳答案

您不能直接在setState中执行initState,但可以将初始化包装在PostFrameCallback中,以确保initStateWidget生命周期完成。

    class _AccountMenuState extends State<AccountMenu> { {
List<Account> accounts;

Future<List<Account>> getAccounts() async {
final response = await http.get('http://localhost:5000/accounts/' + globals.userId);
return jsonDecode(response);
}

setAccounts() async {
accounts = await getAccounts();
setState(() {})
}

@override
void initState() {
WidgetsBinding.instance.addPostFrameCallback((_) => setAccounts());
super.initState();
}
}

关于flutter - 通过MaterialPageRoute进行路由时,Flutter Page的数据未加载,但是热重加载是否正确加载了数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63239249/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com