exec method
CSVデータをローカルに保存する。
Androidの場合は外部ストレージに保存する iOSの場合はアプリケーションのドキュメントディレクトリに保存する
Implementation
Future<String> exec({
required String fileName,
required List<List<dynamic>> csvData,
required FileMode fileMode,
}) async {
try {
final csvString = const ListToCsvConverter().convert(csvData);
final Directory directory;
if (Platform.isAndroid) {
directory = await getExternalStorageDirectory() as Directory;
} else {
directory = await getApplicationDocumentsDirectory();
}
final filePath = '${directory.path}/$fileName';
final file = File(filePath);
// ファイルが既に存在、かつ、appendモードの場合は改行を追加
if (fileMode == FileMode.append && await file.exists()) {
await file.writeAsString('\n$csvString', mode: fileMode);
} else {
await file.writeAsString(csvString, mode: fileMode);
}
return filePath;
} catch (e) {
throw ServiceException(ServiceErrorType.fileSaveError,
ServiceErrorType.fileSaveError.message);
}
}