大家好,我尝试使用 docx_template 包 flutter 在 docx 文件中添加图像 UnsupportedError (不支持的操作:无法修改不可修改的列表)
我在列表中发现了这个错误吗?值 = 等待 docx.generate(c);
Future<File> storeImageInDocx(File imageFile) async {
final appDocumentsDirectory = Platform.isAndroid
? await getExternalStorageDirectory() //FOR ANDROID
: await getApplicationDocumentsDirectory();
String fileDirectory = Platform.isAndroid
? "${appDocumentsDirectory?.path.split("Android")[0]}Download/iScanConnect"
: "${appDocumentsDirectory?.path}";
if (await Directory(fileDirectory).exists() != true) {
Directory(fileDirectory).createSync(recursive: true);
}
String filePath =
'$fileDirectory/${DateTime.now().millisecondsSinceEpoch}.docx';
File file = File(filePath);
var data = await rootBundle.load('assets/template.docx');
var bytes = data.buffer.asUint8List();
var docx = await DocxTemplate.fromBytes(bytes);
var c = Content();
// c.add(TextContent("docname", "Simple docname"));
// c.add(ImageContent("image", imageFile.readAsBytesSync()));
c
..add(TextContent("docname", "Simple docname"))
..add(ImageContent("image", imageFile.readAsBytesSync()));
List<int>? value = await docx.generate(c);
if (value != null) {
await file.writeAsBytes(value); // Write the generated .docx file to disk
log('Docx saved to: $filePath');
showCustomSnackBar(content: 'Docx saved to: $filePath');
return file;
} else {
log('Error while saving Docx');
showCustomSnackBar(content: 'Error while saving Docx');
return File('');
}
}
在尝试生成包含一些表格和图像的 docx 时,我遇到了同样的问题。 我发现这个问题是因为“docx_entry.dart”第 29 行有:
arch.files[_index] = ArchiveFile(_name, data.length, data);
而“archive.dart”第 15 行有:
List<ArchiveFile> get files => UnmodifiableListView(_files);
由于“files”是一个“UnmodifyingListView”数据,我们无法修改“arch.files”的内容。
作为此问题的临时解决方案,我只是将“archive.dart”第 15 行更改为:
List<ArchiveFile> get files => _files;
您可以在以下位置找到“archive.dart”: C:\Users\您的用户\AppData\Local\Pub\Cache\hosted\pub.dev rchive-3.5.1\lib\src