Я пытаюсь генерировать QR и поделиться им как PNG. Этот код отлично работает для Windows, но не будет работать (ничего не происходит) на iOS (Safari) и и Android (Chrome/Samsung Browser).
Я помогаю приложению/веб -разработке и не знаю, что может вызвать это. Я попытался Google ответ тысячами разных способов, но ничего не нашел. < /P>
import 'package:flutter/material.dart';
import 'package:qr_flutter/qr_flutter.dart';
import 'package:flutter/services.dart';
import 'dart:async';
import 'dart:typed_data';
import 'dart:ui';
import 'dart:io';
import 'package:flutter/rendering.dart';
import 'package:path_provider/path_provider.dart';
import 'package:share_plus/share_plus.dart';
import 'package:encrypt/encrypt.dart' as enc;
import 'package:firebase_auth/firebase_auth.dart';
import 'package:http/http.dart';
import 'package:universal_html/html.dart' as html;
class GenerateScreen extends StatefulWidget {
const GenerateScreen({Key? key, @required this.guestName}) : super(key: key);
final String? guestName;
@override
State createState() => GenerateScreenState();
}
class GenerateScreenState extends State {
GlobalKey globalKey = GlobalKey();
List qrFile = [];
String encryptedText() {
final String toEncrypt =
FirebaseAuth.instance.currentUser!.uid + '!' + widget.guestName!;
print(toEncrypt);
final key = enc.Key.fromUtf8('Ijh35hYjabf86H7k8jWgETR264Nhflo9');
final iv = enc.IV.fromLength(16);
final encrypter = enc.Encrypter(enc.AES(key));
final encrypted = encrypter.encrypt(toEncrypt, iv: iv);
return encrypted.base16;
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: _contentWidget(),
);
}
Future _captureAndSharePng() async {
RenderRepaintBoundary boundary =
globalKey.currentContext!.findRenderObject() as RenderRepaintBoundary;
var image = await boundary.toImage();
ByteData? byteData = await image.toByteData(format: ImageByteFormat.png);
Uint8List pngBytes = byteData!.buffer.asUint8List();
qrFile = [
html.File([pngBytes], "qr.png", {"type": "image/png"})
];
await html.window.navigator.share({"files": qrFile, "title": "QR"});
}
_contentWidget() {
final bodyHeight = MediaQuery.of(context).size.height -
MediaQuery.of(context).viewInsets.bottom;
return Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
Padding(
padding: const EdgeInsets.only(bottom: 100),
child: TextButton(
onPressed: () {
_captureAndSharePng();
},
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: const [Text('Compartir QR'), Icon(Icons.share)],
)),
),
Center(
child: RepaintBoundary(
key: globalKey,
child: Container(
color: Colors.white,
child: QrImage(
backgroundColor: Colors.white,
data: encryptedText(),
size: 0.3 * bodyHeight,
),
),
),
),
],
);
}
} ```
Подробнее здесь: https://stackoverflow.com/questions/738 ... ndroid-ios
Flutter Web Sharing Image работает на Windows, но не на Android/iOS ⇐ IOS
Программируем под IOS
-
Anonymous
1745570803
Anonymous
Я пытаюсь генерировать QR и поделиться им как PNG. Этот код отлично работает для Windows, но не будет работать (ничего не происходит) на iOS (Safari) и и Android (Chrome/Samsung Browser).
Я помогаю приложению/веб -разработке и не знаю, что может вызвать это. Я попытался Google ответ тысячами разных способов, но ничего не нашел. < /P>
import 'package:flutter/material.dart';
import 'package:qr_flutter/qr_flutter.dart';
import 'package:flutter/services.dart';
import 'dart:async';
import 'dart:typed_data';
import 'dart:ui';
import 'dart:io';
import 'package:flutter/rendering.dart';
import 'package:path_provider/path_provider.dart';
import 'package:share_plus/share_plus.dart';
import 'package:encrypt/encrypt.dart' as enc;
import 'package:firebase_auth/firebase_auth.dart';
import 'package:http/http.dart';
import 'package:universal_html/html.dart' as html;
class GenerateScreen extends StatefulWidget {
const GenerateScreen({Key? key, @required this.guestName}) : super(key: key);
final String? guestName;
@override
State createState() => GenerateScreenState();
}
class GenerateScreenState extends State {
GlobalKey globalKey = GlobalKey();
List qrFile = [];
String encryptedText() {
final String toEncrypt =
FirebaseAuth.instance.currentUser!.uid + '!' + widget.guestName!;
print(toEncrypt);
final key = enc.Key.fromUtf8('Ijh35hYjabf86H7k8jWgETR264Nhflo9');
final iv = enc.IV.fromLength(16);
final encrypter = enc.Encrypter(enc.AES(key));
final encrypted = encrypter.encrypt(toEncrypt, iv: iv);
return encrypted.base16;
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: _contentWidget(),
);
}
Future _captureAndSharePng() async {
RenderRepaintBoundary boundary =
globalKey.currentContext!.findRenderObject() as RenderRepaintBoundary;
var image = await boundary.toImage();
ByteData? byteData = await image.toByteData(format: ImageByteFormat.png);
Uint8List pngBytes = byteData!.buffer.asUint8List();
qrFile = [
html.File([pngBytes], "qr.png", {"type": "image/png"})
];
await html.window.navigator.share({"files": qrFile, "title": "QR"});
}
_contentWidget() {
final bodyHeight = MediaQuery.of(context).size.height -
MediaQuery.of(context).viewInsets.bottom;
return Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
Padding(
padding: const EdgeInsets.only(bottom: 100),
child: TextButton(
onPressed: () {
_captureAndSharePng();
},
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: const [Text('Compartir QR'), Icon(Icons.share)],
)),
),
Center(
child: RepaintBoundary(
key: globalKey,
child: Container(
color: Colors.white,
child: QrImage(
backgroundColor: Colors.white,
data: encryptedText(),
size: 0.3 * bodyHeight,
),
),
),
),
],
);
}
} ```
Подробнее здесь: [url]https://stackoverflow.com/questions/73848361/flutter-web-sharing-image-works-on-windows-but-not-on-android-ios[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия