Как вы говорите, разрешения на ресурсы связаны с Намерением.Однако это должно быть прозрачно для вас, поскольку вы должны иметь возможность получить InputStream, используя (в MainActivity):
InputStream inputStream = getContentResolver().openInputStream(imageUri);
Поскольку разрешение действительно только в течение срока действия Intent, вам, вероятно, следует использовать этоInputStream для немедленного считывания файла, либо в память, либо во временный файл, принадлежащий вашему собственному приложению (в зависимости от размера фотографии).
После визуализации виджета вы можете запросить байтовый массив или имя файла черезMethodChannel
, а во Flutter используйте конструкторы Image.memory
или Image.file
для создания виджета изображения.
Если используется метод временного файла, используйте getCacheDir()
в Java для поиска папки кэша.Создайте свое собственное временное имя файла и скопируйте файл.На стороне флаттера используйте package:path_provider - getTemporaryDirectory()
, чтобы найти тот же каталог.Просто передайте имя файла через MethodChannel.