Чтение содержимого "file.txt" в List <String>dart - PullRequest
0 голосов
/ 29 мая 2020

Мне нужно получить текст внутри файла ".txt", назначить его переменной и разделить на "," в списке строк.

Все работает нормально, проблема в том, что хранится в переменной "Instance of FutureString>".

Итак, я добавил .then((value) =>value); в _MyRead, чтобы дождаться завершения действия чтения, но результат тот же.

Все работает, мне просто нужно получить текст из файла. Фактически через несколько минут go, результатом действия чтения было null, возможно, это может помочь.

Код:

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

Future<File>  _localFile(String name) async {
final path = await _localPath;
print(path);
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 _MyRead(String filename){
 var read_ = _read(filename).then((value) =>value);
 String ridd= read_.toString();
 return ridd;
}

List<String> _getLanguages() {
  var _lan= _read("languages.txt");
  if ( _lan==null ) print("languages is empty");
  List<String> list =_lan.toString().split(",");
  return list;
}

1 Ответ

0 голосов
/ 29 мая 2020

Вы можете попробовать это:

Future<String>_MyRead(String filename) async {
 var read_ = await _read(filename);
 String ridd= read_.toString();
 return ridd;
}

, и вам нужно ждать, когда вы вызываете функцию чтения, поскольку она возвращает Future:

var _lan= await _read("languages.txt");

(Не забудьте сделать тогда ваша функция асинхронная)

...