Как использовать строку, возвращаемую методом Future ‹String› во флаттере?

Я пытаюсь прочитать компоненты файла json, используя следующий метод:

import 'dart:io';

class CharacterDataReader {
  Future<String> read() async {
    final file = File('assets/data/character_data.json');

    String data = await file.readAsString();

    return data;
  }
}

Теперь я пытаюсь присвоить считанные значения строке с именем data и json.decode () в другом классе, используя следующее:


Future<String> data = CharacterDataReader().read();
Map<String, dynamic> characterData = json.decode(data);

Однако это не работает, поскольку json.decode () принимает только строки в качестве параметра. Поэтому может кто-нибудь сказать мне, как мне преобразовать это будущее в настоящую строку?


person KILLERMAN2003    schedule 25.11.2020    source источник


Ответы (1)


так как это будущее, вам нужно добавить ключевое слово await

String data= await CharacterDataReader().read();

ознакомьтесь с официальной документацией dart по асинхронному программированию

person Mr Random    schedule 25.11.2020