showPickerWithFormType static method
Future<ExtendedAssetEntity?>
showPickerWithFormType(
- BuildContext context, {
- List<
PickerFromTypeItem> fromTypes = defaultPickerFromTypeItem, - AssetPickerConfig? assetPickerConfig,
- AssetPickerPageRouteBuilder<
List< ? pageRouteBuilderForAssetPicker,AssetEntity> > - CameraPickerConfig? cameraPickerConfig,
- CameraPickerPageRoute<
AssetEntity> pageRouteBuilderForCameraPicker(- Widget picker
- FlAssetFileRenovate? renovate,
- int maxBytes = 167772160,
选择图片或者视频
Implementation
static Future<ExtendedAssetEntity?> showPickerWithFormType(
BuildContext context, {
/// 选择框提示item
List<PickerFromTypeItem> fromTypes = defaultPickerFromTypeItem,
/// 资源选择器配置信息
AssetPickerConfig? assetPickerConfig,
AssetPickerPageRouteBuilder<List<AssetEntity>>?
pageRouteBuilderForAssetPicker,
/// 相机配置信息
CameraPickerConfig? cameraPickerConfig,
CameraPickerPageRoute<AssetEntity> Function(Widget picker)?
pageRouteBuilderForCameraPicker,
/// 资源重编辑
FlAssetFileRenovate? renovate,
/// 资源最大占用字节
int maxBytes = 167772160,
}) async {
if (!_supportable) return null;
final pickerFromTypeConfig = await showPickerFromType(context, fromTypes);
if (pickerFromTypeConfig == null) return null;
AssetEntity? entity;
switch (pickerFromTypeConfig.fromType) {
case PickerFromType.gallery:
if (context.mounted) {
final assetsEntity = await showPickerAssets(context,
pageRouteBuilder: pageRouteBuilderForAssetPicker,
pickerConfig: AssetPickerConfig(
maxAssets: 1,
requestType: pickerFromTypeConfig.requestType,
selectedAssets: []).merge(assetPickerConfig));
if (assetsEntity == null || assetsEntity.isEmpty) return null;
entity = assetsEntity.first;
} else {
return null;
}
break;
case PickerFromType.camera:
if (context.mounted) {
entity = await showPickerFromCamera(context,
pageRouteBuilder: pageRouteBuilderForCameraPicker,
pickerConfig: const CameraPickerConfig(
resolutionPreset: ResolutionPreset.high)
.merge(cameraPickerConfig)
.copyWith(
enableRecording:
pickerFromTypeConfig.requestType.containsVideo(),
onlyEnableRecording:
pickerFromTypeConfig.requestType == RequestType.video,
enableAudio: pickerFromTypeConfig.requestType
.containsVideo() ||
pickerFromTypeConfig.requestType.containsAudio()));
} else {
return null;
}
break;
default:
return null;
}
if (entity == null) return null;
final file = await entity.file;
if (file == null) {
errorCallback?.call(ErrorDes.maxBytes);
return null;
}
final fileBytes = file.readAsBytesSync();
if (fileBytes.length > maxBytes) {
errorCallback?.call(ErrorDes.maxBytes);
return null;
}
return await entity.toExtended(renovate: renovate);
}