【问题标题】:How to access future content如何访问未来的内容
【发布时间】:2021-12-02 21:22:12
【问题描述】:

我有这个功能正在未来的构建器中工作:

Future<Data> fetchData(String barCode, String url) async {
  final response = await http.get(Uri.parse(url + barCode));

  Map<String, dynamic> novoJson = json.decode(utf8.decode(response.bodyBytes));
  novoJson.forEach((key, value) {
    if (value == null) {
      novoJson.update(key, (value) => "Não encontrado");
    }
  });

  if (response.statusCode == 200) {
    return Data.fromJson(novoJson);
  } else {
    throw Exception('Failed to load album');
  }
}

class Data {
  final Map<String, dynamic> response;

  Data({required this.response});

  factory Data.fromJson(Map<String, dynamic> json) {
    return Data(response: json);
  }
}

现在我正在尝试访问它在 ElevatedButton 中返回的 json,如下所示:

onPressed: () {
                if (_formKey.currentState!.validate()) {
                  var futureData = fetchData(myController.text, args.url);
                  showDialog(
                      context: context,
                      builder: (BuildContext context) {
                        return AlertDialog(title: animacaoRespostaApi());
                      });
                  futureData.whenComplete(() {
                    Navigator.of(context).pop();
                    print(futureData);
                    return Navigator.pushNamed(context, args.rota, arguments: ParametrosRetornoConsulta(myController.text, args.url));
                  });
                }
              }

但是当打印它时,我得到了 Future 的实例而不是对象,例如,我无法使用 futureData['id'] 访问它的内容。 如何让 futureData 不再是 Future 而成为可迭代对象?

【问题讨论】:

  • 如果您从 API 获取数据,请参考我的回答 here 或 here 或 here 希望对您有所帮助
  • 这些都不适用于我,我需要获取按钮内的信息。

标签: flutter


【解决方案1】:

Future&lt;Data&gt; fetchData是Future,你需要使用await作为数据。


onPressed: () async {
                if (_formKey.currentState!.validate()) {
                  var futureData = await fetchData(myController.text, args.url);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-23
    • 1970-01-01
    • 2016-03-08
    • 2015-04-11
    • 2017-04-11
    • 2015-04-10
    相关资源
    最近更新 更多