import 'dart:async';
import 'package:flutter/services.dart';
class FlutterDocumentPicker {
static const MethodChannel _channel =
MethodChannel('flutter_document_picker');
static Future<String?> openDocument(
{FlutterDocumentPickerParams? params}) async {
final result = (await _channel.invokeMethod(
'pickDocument',
params?.toJson(),
))
?.cast<String?>();
return result?.isNotEmpty ?? false ? result.first : null;
}
static Future<List<String?>?> openDocuments(
{FlutterDocumentPickerParams? params}) async {
final paramsJson = params?.toJson();
paramsJson?.addAll({'isMultipleSelection': true});
return (await _channel.invokeMethod(
'pickDocument',
paramsJson,
))
?.cast<String?>();
}
}
class FlutterDocumentPickerParams {
final List<String>? allowedUtiTypes;
final List<String>? allowedFileExtensions;
final List<String>? allowedMimeTypes;
final List<String> invalidFileNameSymbols;
FlutterDocumentPickerParams({
this.allowedUtiTypes,
this.allowedFileExtensions,
this.allowedMimeTypes,
this.invalidFileNameSymbols = const ['/'],
});
Map<String, dynamic> toJson() {
return {
'allowedUtiTypes': allowedUtiTypes,
'allowedFileExtensions': allowedFileExtensions,
'allowedMimeTypes': allowedMimeTypes,
'invalidFileNameSymbols': invalidFileNameSymbols,
};
}
}