Получить текст из файла ".txt" и сохранить его в строковой переменной dart - PullRequest
0 голосов
/ 28 мая 2020

У меня есть файл «.txt» с именем «bio.txt» в папке «Документ» моего приложения. Я хочу прочитать его содержимое и сохранить его в строковой переменной. Моя проблема в том, что «действие чтения» является функцией «Будущее», и у меня есть проблемы с сохранением его значения в «Строке».

Я прочитал файл с помощью:

Future<String> get _localPath async {
  final directory = await getApplicationDocumentsDirectory();
  return directory.path;
}

Future<File> _localFile(String name) async {
  final path = await _localPath;
  return File('$path/$name');
}

Future<String> _read(String filename) async {
  try {
    final file = await _localFile(filename);

    // Read the file.
    return await file.readAsString();
  } catch (e) {
    // If encountering an error, return 0.
    return "Can't read";
  }
}

И я хотел бы сохранить его с помощью:

String _bio = _read("bio.txt").then((value) => String);

Вы знаете, почему это решение не работает? Есть предложения?

Ответы [ 3 ]

1 голос
/ 29 мая 2020

Вы можете использовать блок then или использовать async / await

_read ('file.txt').then((value){
bio = value;
 });

Или:

bio = await _read ('file.txt');

1 голос
/ 28 мая 2020

Поскольку then Futures не возвращает значение, оно должно быть таким:

var _bio;

_read("bio.txt").then((value) {
  _bio = value;
});

или путем преобразования контекста _bio в асинхронный,

var _bio = await _read("bio.txt");
0 голосов
/ 29 мая 2020

Это мое решение:

String _myRead( String filename){
 var _bio;

 _read("bio.txt").then((String) {
   _bio = String;
 });
 return _bio;
}
String _bio=_myRead("bio.txt");
...