繁体   English   中英

从异步方法获取数据?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM