import 'package:flutter/material.dart'; import 'package:kulinar_app/constants.dart'; import 'package:kulinar_app/widgets/custom_drawer_widget.dart'; import 'package:kulinar_app/widgets/toastbar_widget.dart'; import 'package:url_launcher/url_launcher.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; class InfoView extends StatefulWidget { const InfoView({Key? key}) : super(key: key); @override InfoViewState createState() => InfoViewState(); } class InfoViewState extends State { String name = "David Penkowoj"; String websiteURL = "https://davidpenkowoj.de"; String sourceCodeURL = "https://git.davidpenkowoj.de/kulinar_app.git"; String privacyNoticeURL = "https://davidpenkowoj.de/static/files/privacy-notice.html"; @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text(AppLocalizations.of(context)!.category9)), drawer: const CustomDrawer(initialIndex: 6), body: ListView( children: [ Padding( padding: const EdgeInsets.only(top: 15.0, left: 15.0), child: Text(AppLocalizations.of(context)!.category9, style: cTinyTitleStyle), ), ListTile( title: Text(AppLocalizations.of(context)!.info1, style: cDefaultTextStyle), subtitle: const Text(cVersion, style: cDetailsTextStyle), ), ListTile( title: Text(AppLocalizations.of(context)!.info2, style: cDefaultTextStyle), subtitle: Text(name, style: cDetailsTextStyle), ), ListTile( title: Text(AppLocalizations.of(context)!.info3, style: cDefaultTextStyle), subtitle: Text(websiteURL, style: cDetailsTextStyle, overflow: TextOverflow.ellipsis), trailing: IconButton( icon: const Icon(Icons.north_east_rounded), onPressed: () { _launchLink(websiteURL, context); }, ), ), ListTile( title: Text(AppLocalizations.of(context)!.info4, style: cDefaultTextStyle), subtitle: Text(sourceCodeURL, style: cDetailsTextStyle, overflow: TextOverflow.ellipsis), trailing: IconButton( icon: const Icon(Icons.north_east_rounded), onPressed: () { _launchLink(sourceCodeURL, context); }, ), ), ListTile( title: Text(AppLocalizations.of(context)!.info5, style: cDefaultTextStyle), subtitle: Text(privacyNoticeURL, style: cDetailsTextStyle, overflow: TextOverflow.ellipsis), trailing: IconButton( icon: const Icon(Icons.north_east_rounded), onPressed: () { _launchLink(privacyNoticeURL, context); }, ), ), ListTile( title: Text(AppLocalizations.of(context)!.info6, style: cDefaultTextStyle), trailing: IconButton( icon: const Icon(Icons.launch_rounded), onPressed: () { _showDialog(); }, ), ), ], ), ); } _showDialog() { showAboutDialog( context: context, applicationVersion: cVersion, applicationIcon: SizedBox(height: 35, width: 35, child: Image.asset("assets/icons/icon.png")), applicationLegalese: AppLocalizations.of(context)!.legalease, ); } cantOpenLink(var why, BuildContext context) { ToastBar.showToastBar(context, AppLocalizations.of(context)!.linkError, actionLabel: ""); debugPrint("Could not open $why"); } _launchLink(String link, BuildContext context) async { Uri uri = Uri(); try { uri = Uri.parse(link); if (await canLaunchUrl(uri)) { await launchUrl(uri, mode: LaunchMode.externalApplication); } else { throw link; } } catch (e) { cantOpenLink(e, context); } } }