pickFiles function
Implementation
Future<bool> pickFiles(
BuildContext context,
List<String> sourceList,
SharedPreferences _sharedPreferences,
List<String>? addExternalVirtualList,
void Function(List<String>?) callback) async {
bool selected = false;
FilePickerResult? result = await FilePicker.platform.pickFiles(
type: FileType.image,
);
if (result != null) {
String originPath = result.files.single.path!;
String originName = result.files.single.name;
if (originName.endsWith('.jpg') &&
originName.endsWith('.png') &&
originName.endsWith('.jpeg')) {
ToastUtils.showToast(
context, Strings.virtualBackgroundImageFormatNotSupported);
return false;
}
File originFile = File(originPath);
int size = await originFile.length();
int MB = 1024 * 1024;
///定义MB的计算常量
if (size >= 5 * MB) {
ToastUtils.showToast(context, Strings.virtualBackgroundImageLarge);
return false;
}
Directory? directory;
if (Platform.isAndroid) {
directory = await getExternalStorageDirectory();
} else if (Platform.isIOS) {
directory = await getApplicationDocumentsDirectory();
}
String path = '${directory!.path}/virtual/$originName';
final contents = await originFile.readAsBytes();
File('$path')
..createSync(recursive: true)
..writeAsBytes(contents);
sourceList.removeLast();
sourceList.add(path);
addExternalVirtualList =
_sharedPreferences.getStringList(addExternalVirtualListKey);
if (addExternalVirtualList == null || addExternalVirtualList.length <= 0) {
addExternalVirtualList = <String>[];
}
addExternalVirtualList.add(path);
_sharedPreferences.setStringList(
addExternalVirtualListKey, addExternalVirtualList);
sourceList.add('+');
selected = true;
} else {
Alog.i(
tag: _tag,
moduleName: _moduleName,
content: 'User canceled the picker');
// User canceled the picker
selected = false;
}
callback(addExternalVirtualList);
return selected;
}