运行报错The argument type 'List<int>?' can't be assigned to the parameter type 'List<int>'.dart
时间: 2024-03-23 22:43:48 浏览: 152
这个错误通常是由于将一个可空类型的变量赋值给了不可空类型的变量引起的。在Dart中,如果你声明了一个变量类型为`List<int>`,那么这个变量必须是不可空的,即不能为null。如果你尝试将一个可空类型的变量赋值给它,就会出现上述错误。
因此,你需要在将`excel.encode()`返回的可空类型`List<int>?`转换为不可空类型`List<int>`时进行非空判断。以下是修改后的代码:
```dart
Future<void> exportToExcel(List<List<dynamic>> data) async {
// 获取应用文档目录
final directory = await getApplicationDocumentsDirectory();
final path = directory.path;
// 创建一个新的Excel文档
final excel = Excel.createExcel();
final sheet = excel['Sheet1'];
// 将数据写入Excel文档
for (var i = 0; i < data.length; i++) {
final row = sheet.addRow(data[i]);
row.cellStyle = CellStyle(backgroundColorHex: '#FFFFFF');
}
// 保存Excel文档
final file = File('$path/data.xlsx');
final bytes = excel.encode();
if (bytes != null) {
await file.writeAsBytes(bytes);
}
// 删除CSV文件
await file.delete();
}
```
在这个例程中,我们将`excel.encode()`返回的可空类型`List<int>?`赋值给了一个新的变量`bytes`,然后在`if (bytes != null)`中进行了非空判断。只有在`bytes`不为null时,才将其写入文件。
这样就可以避免上述错误了。
阅读全文