buildSourceList method
List<ActionSheetItem>
buildSourceList({
- required BuildContext context,
- required ValueNotifier<
List< selectedFiles,PlatformFile> >
Implementation
List<ActionSheetItem> buildSourceList(
{required BuildContext context,
required ValueNotifier<List<PlatformFile>> selectedFiles}) {
final List sourcesList = [
HMFileSource(
icon: const Icon(
Icons.camera_alt_rounded,
color: Colors.blue,
),
source: FileSource.camera),
HMFileSource(
icon: const Icon(
Icons.photo,
color: Colors.blue,
),
source: FileSource.gallery),
HMFileSource(
icon: const Icon(
Icons.insert_drive_file,
color: Colors.blue,
),
source: FileSource.document),
];
final List<ActionSheetItem> actionsList = sourcesList.map((source) {
final String title = source.source.value as String;
final Widget icon = source.icon as Widget;
return ActionSheetItem(
icon: icon,
title: title,
onPressed: () async {
if (source.source == FileSource.camera) {
await availableCameras().then(
(value) => Navigator.push(
context,
MaterialPageRoute(builder: (_) => CameraPage(cameras: value)),
).then((value) async {
if (value != null) {
final int size = await value.length() as int;
selectedFiles.value = [
PlatformFile(
name: value.name as String,
size: size,
path: value.path as String)
];
}
}),
);
} else if (source.source == FileSource.gallery) {
isMultipleFiles
? FilePickerLogic.pickMultipleFiles(
selectedFiles, FileType.media)
: FilePickerLogic.pickFile(selectedFiles, FileType.media);
} else {
isMultipleFiles
? FilePickerLogic.pickMultipleFiles(
selectedFiles, FileType.any)
: FilePickerLogic.pickFile(selectedFiles, FileType.any);
}
});
}).toList();
return actionsList;
}