
[英]problem when get data from Async method, and add it to another async method in flutter
[英]Get data from an asynchronous method?
从 .then( .then((Value)
之外的方法getAllPlayerData()
获取数据时,我遇到了很大的麻烦。
我的代码中的“错误打印”出现在我的“良好打印”之前。 我希望能够在我的代码中使用我的变量“TheStats”以及其中的所有数据,而不是“null”值或“Future<Dynamic 的实例”
import 'package:cleanmaybe/Controllers/players_controller.dart';
import 'package:flutter/material.dart';
class PlayerStatView extends StatefulWidget {
const PlayerStatView({Key? key}) : super(key: key);
@override
State<PlayerStatView> createState() => _PlayerStatViewState();
}
class _PlayerStatViewState extends State<PlayerStatView> {
var theStats;
@override
void initState() {
getAllPlayerData().then((value) {
theStats = value;
print("Good print $theStats");
});
super.initState();
}
@override
Widget build(BuildContext context) {
print("bad print $theStats");
return Container();
}
}
这是我的“getAllPlayerData()”
getAllPlayerData() async{
SharedPreferences sp = await _pref;
int? id = sp.getInt('idPlayer');
final statAccess = DatabaseModel();
var lookForData = await statAccess.getPlayerData(id);
return lookForData;
}
如果你需要它,这是我的getPlayerData(id)
方法,它从我的数据库中获取所有数据:
Future getPlayerData(idPlayer) async {
var dbCoach = await db;
var dataPlayer = dbCoach!.rawQuery("SELECT * FROM players WHERE"
" idPlayer = '$idPlayer'");
return dataPlayer;
}
只要getAllPlayerData()
需要任何时间来处理此构造,您的“坏打印”实际上总是会在“好打印”之前运行。
有几种方法可以解决这个问题,但建议使用FutureBuilder
小部件(正如@pskink 刚刚写的评论:))检查官方文档。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.