#flutter #dart
Вопрос:
я пытаюсь отправить изображение в instagram с помощью flutter с пакетом social_share.
Моя проблема в том, что я новичок в flutter и не нахожу правильного способа отправить путь к функции SocialShare.shareInstagramStory(imageFile.path, "#ffffff", "#000000", "https://deep-link-url");
Мои изображения расположены в корне проекта flutter в разделе ресурсы/изображения/my_images. Когда я пытаюсь проложить путь SocialShare.shareInstagramStory("assets/images/my_image.jpeg");
я предполагаю, что телефон не знает этого пути, так как он ищет в своем собственном каталоге
надеюсь, я достаточно ясно выразился и спасибо за ваше время!
Изменить : вот мой код:
onPressed: () async {
Directory tempDir = await getTemporaryDirectory();
String tempPath = tempDir.path;
File file = File(tempDir.path);
final byteData = await rootBundle.load('assets/images/img_1.jpeg');
await file.writeAsBytes(byteData.buffer.asUint8List(byteData.offsetInBytes, byteData.lengthInBytes));
await SocialShare.shareInstagramStory(file.path);
Navigator.of(context).pop();
},
я получил эту ошибку :
E/flutter (12761): [ERROR:flutter/lib/ui/ui_dart_state.cc(199)] Unhandled Exception: FileSystemException: Cannot open file, path = '/data/user/0/com.example.app/cache' (OS Error: Is a directory, errno = 21)
Комментарии:
1. 2 вещи. 1> Вы объявили этот файл изображения в файле pubspec. yaml. 2> Вы остановили, а затем перезапустили приложение? Горячий перезапуск этого не сделает. Если вы не знаете о первом, дайте мне знать. Я подробно расскажу об этом в своем ответе
2. Спасибо за ваш ответ! Да, я сделал и то, и другое !
Ответ №1:
Итак, в принципе, все, что вам нужно сделать, это преобразовать изображение вашего ресурса в файл, затем создать временный путь и сохранить этот файл там. Затем вы можете указать этот путь
, который нам нужен для создания временного пути с помощью этого плагина https://pub.dev/packages/path_provider
Directory tempDir = await getTemporaryDirectory();
String tempPath = tempDir.path;
Затем создайте файл
File file = File(tempDir.path '/img_1.jpeg');//You might have to play arounf with the /. Remove it or put it in the end to see what works
Теперь нам нужно записать изображение на это
final byteData = await rootBundle.load('assets/images/img_1.jpeg');
await file.writeAsBytes(byteData.buffer.asUint8List(byteData.offsetInBytes, byteData.lengthInBytes));
Теперь вы можете использовать этот временный путь, чтобы делать то, что хотите
Комментарии:
1. у меня ошибка, думаю, я делаю что-то не так, я отредактировал свой пост с кодом
2. Я отредактировал свой ответ чем-то новым. Измените способ создания файла
3. Ты луна моих дней и солнце моих ночей, большое тебе спасибо за твою помощь и твое время