Приложение Flutter сбои в Android для пакета are_plusAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Приложение Flutter сбои в Android для пакета are_plus

Сообщение Anonymous »

Я использую share_plus, чтобы поделиться изображением. Я генерирую изображение QR -кода, и мне нужно поделиться этим внешним. Ранее это работало нормально, я не уверен, что произошло после этого. Это отлично работает, когда я подключаю физическое устройство (Pixel 8). У этого нет проблем для iOS в производстве, однако для того же пикселя 8 приложение сбивается.
Это происходит только для Android в Productions.

Код: Выделить всё

Future shareImage(QR qr) async {
final File? image = await getImage(qr);
if (image == null) return;

final Uint8List bytes = await image.readAsBytes();
final String safeFileName =
'${qr.qrCode.replaceAll(RegExp(r'[^\w\-]+'), '_')}.png';

try {
final xFile = XFile.fromData(
bytes,
name: safeFileName,
mimeType: 'image/png',
);

await SharePlus.instance.share(ShareParams(
files: [xFile],
title: 'QR',
text: _getQRText(qr),
));
} catch (e) {
NotificationHelper.error('Share Failed', 'Could not share QR: $e');
}
}
Я использую share_plus: ^11.0.0
androidmanifest.xml[/b]

Код: Выделить всё


< /code>
У меня также есть следующее в манифестном файле. < /p>

  android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.fileprovider"
android:exported="false"
android:grantUriPermissions="true">


< /code>
У меня есть аналогичная функция, в которой XML -файл возвращается из API и должен быть обмен. У этого есть такая же проблема. < /P>

void downloadAndSaveFile(
BuildContext context, dynamic response, String? filename) async {
final File? file = await _generateTempFile(filename!, response);
if (file != null) {
_shareFile(file, filename);
} else {
NotificationHelper.error('Download Failed', 'Could not save the file.');
}
}

Future _generateTempFile(String filename, List bytes) async {
try {
if (bytes.isEmpty) {
NotificationHelper.error(
'File Error', 'Response is empty – cannot create file.');
return null;
}

final tempDir = await getTemporaryDirectory();
final file = File('${tempDir.path}/$filename');
await file.writeAsBytes(bytes, flush: true);
return file;
} catch (e) {
NotificationHelper.error('File Error', 'Unable to create temp file: $e');
return null;
}
}

Future _shareFile(File file, String? filename) async {
if (filename == null) return;

try {
final Uint8List bytes = await file.readAsBytes();

final xFile = XFile.fromData(
bytes,
name: filename,
mimeType: 'application/octet-stream',
);

await SharePlus.instance.share(
ShareParams(
files: [xFile],
fileNameOverrides: [filename],
title: filename,
text: filename,
),
);
} catch (e) {
NotificationHelper.error('Share Failed', 'Could not share file: $e');
}
}
Я использую одну и ту же функцию _generatetempfile для генерации и загрузки файла xlsx, и это работает нормально.
Любая справка.>

Подробнее здесь: https://stackoverflow.com/questions/796 ... us-package
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»