From 2bfdc67faedf14dbf4c08b507f64431b02e3b6fd Mon Sep 17 00:00:00 2001 From: yaso Date: Mon, 9 Dec 2024 15:10:12 +0200 Subject: [PATCH] add url launcher to open links --- .../lib/mih_packages/about_mih/mih_about.dart | 45 ++++++++++++------- .../builder/build_file_view.dart | 26 +++++++---- .../patient_profile/full_screen_file.dart | 10 +++-- 3 files changed, 53 insertions(+), 28 deletions(-) diff --git a/Frontend/lib/mih_packages/about_mih/mih_about.dart b/Frontend/lib/mih_packages/about_mih/mih_about.dart index 5b3836a9..75d83674 100644 --- a/Frontend/lib/mih_packages/about_mih/mih_about.dart +++ b/Frontend/lib/mih_packages/about_mih/mih_about.dart @@ -8,6 +8,7 @@ import '../../mih_components/mih_layout/mih_tile.dart'; import '../../main.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import "package:universal_html/js.dart" as js; +import 'package:url_launcher/url_launcher.dart'; // import 'dart:html' as html; class MIHAbout extends StatefulWidget { @@ -20,6 +21,20 @@ class MIHAbout extends StatefulWidget { } class _MIHAboutState extends State { + final Uri _tiktokUrl = + Uri.parse('https://www.tiktok.com/@mzansi.innovation.hub'); + final Uri _instagramUrl = + Uri.parse('https://www.instagram.com/mzansi.innovation.hub'); + final Uri _whatsappUrl = + Uri.parse('https://whatsapp.com/channel/0029Vax3INCIyPtMn8KgeM2F'); + final Uri _youtubeUrl = + Uri.parse('https://www.youtube.com/@mzansiinnovationhub'); + final Uri _xUrl = Uri.parse('https://x.com/mzansi_inno_hub'); + final Uri _linkedinUrl = + Uri.parse('https://www.linkedin.com/company/mzansi-innovation-hub/'); + final Uri _facebookUrl = + Uri.parse('https://www.facebook.com/profile.php?id=61565345762136'); + MIHAction getActionButton() { return MIHAction( icon: const Icon(Icons.arrow_back), @@ -317,7 +332,7 @@ class _MIHAboutState extends State { // //bottom: height / 5, // top: 20, ), - // physics: , + physics: const NeverScrollableScrollPhysics(), // shrinkWrap: true, itemCount: getSocialsList().length, gridDelegate: const SliverGridDelegateWithMaxCrossAxisExtent( @@ -335,8 +350,7 @@ class _MIHAboutState extends State { List socials = []; socials.add(MIHTile( onTap: () { - // html.window - // .open('https://www.tiktok.com/@mzansi.innovation.hub', 'new tab'); + launchSocialUrl(_tiktokUrl); }, tileName: "TikTok", tileIcon: Center( @@ -352,8 +366,7 @@ class _MIHAboutState extends State { //================================================================== socials.add(MIHTile( onTap: () { - // html.window - // .open('https://www.instagram.com/mzansi.innovation.hub', 'new tab'); + launchSocialUrl(_instagramUrl); }, tileName: "Instagram", tileIcon: Center( @@ -369,8 +382,7 @@ class _MIHAboutState extends State { //================================================================== socials.add(MIHTile( onTap: () { - // html.window.open( - // 'https://whatsapp.com/channel/0029Vax3INCIyPtMn8KgeM2F', 'new tab'); + launchSocialUrl(_whatsappUrl); }, tileName: "Whatsapp", tileIcon: Center( @@ -386,8 +398,7 @@ class _MIHAboutState extends State { //================================================================== socials.add(MIHTile( onTap: () { - // html.window - // .open('https://www.youtube.com/@mzansiinnovationhub', 'new tab'); + launchSocialUrl(_youtubeUrl); }, tileName: "YouTube", tileIcon: Center( @@ -403,7 +414,7 @@ class _MIHAboutState extends State { //================================================================== socials.add(MIHTile( onTap: () { - // html.window.open('https://x.com/mzansi_inno_hub', 'new tab'); + launchSocialUrl(_xUrl); }, tileName: "X", tileIcon: Center( @@ -419,9 +430,7 @@ class _MIHAboutState extends State { //================================================================== socials.add(MIHTile( onTap: () { - // html.window.open( - // 'https://www.linkedin.com/company/mzansi-innovation-hub/', - // 'new tab'); + launchSocialUrl(_linkedinUrl); }, tileName: "LinkedIn", tileIcon: Center( @@ -437,9 +446,7 @@ class _MIHAboutState extends State { //================================================================== socials.add(MIHTile( onTap: () { - // html.window.open( - // 'https://www.facebook.com/profile.php?id=61565345762136', - // 'new tab'); + launchSocialUrl(_facebookUrl); }, tileName: "FaceBook", tileIcon: Center( @@ -456,6 +463,12 @@ class _MIHAboutState extends State { return socials; } + Future launchSocialUrl(Uri linkUrl) async { + if (!await launchUrl(linkUrl)) { + throw Exception('Could not launch $linkUrl'); + } + } + @override void dispose() { super.dispose(); diff --git a/Frontend/lib/mih_packages/patient_profile/builder/build_file_view.dart b/Frontend/lib/mih_packages/patient_profile/builder/build_file_view.dart index a523c0c4..9e7ae0a4 100644 --- a/Frontend/lib/mih_packages/patient_profile/builder/build_file_view.dart +++ b/Frontend/lib/mih_packages/patient_profile/builder/build_file_view.dart @@ -103,10 +103,13 @@ class _BuildFileViewState extends State { iconSize: 35, padding: const EdgeInsets.all(0), onPressed: () { - html.window.open( - widget.link, - // '${AppEnviroment.baseFileUrl}/mih/$filePath', - 'download'); + if (MzanziInnovationHub.of(context)!.theme.getPlatform() == + "Web") { + html.window.open( + widget.link, + // '${AppEnviroment.baseFileUrl}/mih/$filePath', + 'download'); + } else {} }, icon: Icon( Icons.download, @@ -164,10 +167,17 @@ class _BuildFileViewState extends State { iconSize: 35, padding: const EdgeInsets.all(0), onPressed: () { - html.window.open( - widget.link, - // '${AppEnviroment.baseFileUrl}/mih/$filePath', - 'download'); + if (MzanziInnovationHub.of(context)!.theme.getPlatform() == + "Web") { + html.window.open( + widget.link, + // '${AppEnviroment.baseFileUrl}/mih/$filePath', + 'download'); + } else {} + // html.window.open( + // widget.link, + // // '${AppEnviroment.baseFileUrl}/mih/$filePath', + // 'download'); }, icon: Icon( Icons.download, diff --git a/Frontend/lib/mih_packages/patient_profile/full_screen_file.dart b/Frontend/lib/mih_packages/patient_profile/full_screen_file.dart index e0077ffd..c6961a64 100644 --- a/Frontend/lib/mih_packages/patient_profile/full_screen_file.dart +++ b/Frontend/lib/mih_packages/patient_profile/full_screen_file.dart @@ -210,10 +210,12 @@ class _FullScreenFileViewerState extends State { iconSize: 30, padding: const EdgeInsets.all(0), onPressed: () { - html.window.open( - widget.arguments.link, - // '${AppEnviroment.baseFileUrl}/mih/$filePath', - 'download'); + if (MzanziInnovationHub.of(context)!.theme.getPlatform() == "Web") { + html.window.open( + widget.arguments.link, + // '${AppEnviroment.baseFileUrl}/mih/$filePath', + 'download'); + } else {} }, icon: Icon( Icons.download,