Назад к началу, и все же немного ближе к решению, которое мне нужно. У меня есть file_picker (https://pub.dartlang.org/packages/file_picker),, который помогает выбрать файл с помощью проводника:
String _filePath;
void getFilePath() async {
try {
String filePath = await FilePicker.getFilePath(
type: FileType.CUSTOM, fileExtension: 'csv');
if (filePath == '') {
return;
}
print("Path: " + filePath);
setState(() {
this._filePath = filePath;
});
} on PlatformException catch (e) {
print("Error picking file: " + e.toString());
}
}
Использование приведенного выше кода возвращает путь к файлу, например, «/storage/emulated/0/Download/1.csv".
Теперь я использую этот путь, чтобы прочитать содержимое файла:
...
RaisedButton(
child: const Text('Import data - dummy'),
color: Theme.of(context).accentColor,
elevation: 4.0,
splashColor: Colors.blueGrey,
onPressed: () {
print('Verifying click done');
// Show contents of the file
readContents();
},
),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: getFilePath,
tooltip: 'Choose file to import',
child: new Icon(Icons.sd_storage),
)
...
Future<File> get _localFile async {
final path = await _filePath;
return File('$path');
}
Future<int> readContents() async {
try {
final file = await _localFile;
// Read the file
String contents = await file.readAsString();
return int.parse(contents);
} catch (e) {
// If we encounter an error, return 0
return 0;
}
}
Теперь, поскольку приведенный выше код должен возвращать содержимое файла CSV, он ничего не делает. CSV-файл содержит список элементов.
Может ли кто-нибудь сообщить мне, почему, и будьте любезны показать мне, как я могу сохранить проанализированный контент файла в строку или, что еще лучше, строки, представляющие каждый столбец из файла?
СПАСИБО!