showImagePicker function

Future<String?> showImagePicker(
  1. BuildContext context
)

Implementation

Future<String?> showImagePicker(BuildContext context) async {
  // 显示顶部说明弹框
  showTopWarningDialog(
      context: context,
      title: S.of(context).permissionStorageTitle,
      content: S.of(context).permissionStorageContent);

  // 权限检查
  final PermissionState ps = await AssetPicker.permissionCheck(
      requestOption: PermissionRequestOption(
        androidPermission: AndroidPermission(
          type: RequestType.image,
          mediaLocation: false,
        ),
      ),
      returnResultDenied: true);

  // 关闭说明弹框
  Navigator.of(context).pop();
  if (ps != PermissionState.authorized && ps != PermissionState.limited) {
    Fluttertoast.showToast(msg: S.of(context).permissionSystemCheck);
    return null;
  }
  final List<AssetEntity>? result = await AssetPicker.pickAssets(context,
      pickerConfig: AssetPickerConfig(
        requestType: RequestType.image,
        shouldRevertGrid: false,
        maxAssets: 1,
        limitedPermissionOverlayPredicate: (state) => false,
      ));
  if (result != null) {
    for (var entity in result) {
      final File? file = await entity.originFile;
      return file?.path;
    }
  }
  return null;
}