Added option to share the app via qr-code

This commit is contained in:
2023-09-17 17:41:37 +02:00
parent 7b18fed51d
commit a479fc5ebd
6 changed files with 132 additions and 17 deletions

View File

@ -0,0 +1,41 @@
import 'package:flutter/material.dart';
import 'package:qr_flutter/qr_flutter.dart';
class AppSharePlatformView extends StatelessWidget {
final String title;
final String url;
const AppSharePlatformView(this.title, this.url, {super.key});
@override
Widget build(BuildContext context) {
Color foregroundColor = Theme.of(context).colorScheme.onBackground;
return Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(title, style: const TextStyle(fontSize: 20, fontWeight: FontWeight.bold)),
const SizedBox(height: 30),
Container(
padding: const EdgeInsets.all(10),
decoration: BoxDecoration(
border: Border.all(color: foregroundColor, width: 10),
),
child: QrImageView(
data: url,
version: QrVersions.auto,
size: 200,
dataModuleStyle: QrDataModuleStyle(
color: foregroundColor,
dataModuleShape: QrDataModuleShape.square
),
eyeStyle: QrEyeStyle(
color: foregroundColor,
eyeShape: QrEyeShape.square,
),
),
),
],
);
}
}

View File

@ -0,0 +1,36 @@
import 'package:flutter/material.dart';
import 'appSharePlatformView.dart';
class QrShareView extends StatefulWidget {
const QrShareView({super.key});
@override
State<QrShareView> createState() => _QrShareViewState();
}
class _QrShareViewState extends State<QrShareView> {
@override
Widget build(BuildContext context) {
return DefaultTabController(
length: 2,
child: Scaffold(
appBar: AppBar(
title: const Text("Teile die App"),
bottom: const TabBar(
tabs: [
Tab(icon: Icon(Icons.android_outlined), text: "Android"),
Tab(icon: Icon(Icons.apple_outlined), text: "iOS & iPadOS"),
],
),
),
body: const TabBarView(
children: [
AppSharePlatformView("Für Android", "https://play.google.com/store/apps/details?id=eu.mhsl.marianum.mobile.client"),
AppSharePlatformView("Für iOS & iPad", "https://apps.apple.com/us/app/marianum-fulda/id6458789560"),
],
),
),
);
}
}

View File

@ -0,0 +1,49 @@
import 'package:flutter/material.dart';
import 'package:loader_overlay/loader_overlay.dart';
import 'package:share_plus/share_plus.dart';
import 'qrShareView.dart';
class SelectShareTypeDialog extends StatelessWidget {
const SelectShareTypeDialog({super.key});
@override
Widget build(BuildContext context) {
return LoaderOverlay(
child: SimpleDialog(
children: [
ListTile(
leading: const Icon(Icons.qr_code_2_outlined),
title: const Text("Per QR-Code"),
trailing: const Icon(Icons.arrow_right),
onTap: () {
Navigator.of(context).push(MaterialPageRoute(builder: (context) => const QrShareView()));
},
),
ListTile(
leading: const Icon(Icons.link_outlined),
title: const Text("Per Link"),
trailing: const Icon(Icons.arrow_right),
onTap: () {
context.loaderOverlay.show();
Share.share(
sharePositionOrigin: Rect.fromCenter(
center: const Offset(0, 0),
width: 0,
height: 0,
),
subject: "App Teilen",
"Hol dir die für das Marianum maßgeschneiderte App:"
"\n\nAndroid: https://play.google.com/store/apps/details?id=eu.mhsl.marianum.mobile.client "
"\niOS: https://apps.apple.com/us/app/marianum-fulda/id6458789560 "
"\n\nViel Spaß!"
).then((_) {
context.loaderOverlay.hide();
});
},
)
],
),
);
}
}