@@ -39,4 +39,22 @@
|
||||
android:name="flutterEmbedding"
|
||||
android:value="2" />
|
||||
</application>
|
||||
|
||||
<!-- Provide required visibility configuration for API level 30 and above -->
|
||||
<queries>
|
||||
<!-- If your app checks for SMS support -->
|
||||
<intent>
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
<data android:scheme="sms" />
|
||||
</intent>
|
||||
<!-- If your app checks for call support -->
|
||||
<intent>
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
<data android:scheme="tel" />
|
||||
</intent>
|
||||
<!-- If your application checks for inAppBrowserView launch mode support -->
|
||||
<intent>
|
||||
<action android:name="android.support.customtabs.action.CustomTabsService" />
|
||||
</intent>
|
||||
</queries>
|
||||
</manifest>
|
||||
|
||||
@@ -2,6 +2,11 @@
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>LSApplicationQueriesSchemes</key>
|
||||
<array>
|
||||
<string>sms</string>
|
||||
<string>tel</string>
|
||||
</array>
|
||||
<key>NSCameraUsageDescription</key>
|
||||
<string>Camera permission is required for barcode scanning.</string>
|
||||
<key>NSLocationWhenInUseUsageDescription</key>
|
||||
|
||||
@@ -194,52 +194,55 @@ class _MIHNotificationDrawerState extends State<MIHNotificationDrawer> {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Drawer(
|
||||
//backgroundColor: MzanziInnovationHub.of(context)!.theme.primaryColor(),
|
||||
child: SingleChildScrollView(
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
children: [
|
||||
Container(
|
||||
color: MzanziInnovationHub.of(context)!.theme.secondaryColor(),
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
Padding(
|
||||
padding: const EdgeInsets.all(5.0),
|
||||
child: Text(
|
||||
"Notifications",
|
||||
style: TextStyle(
|
||||
color:
|
||||
MzanziInnovationHub.of(context)!.theme.primaryColor(),
|
||||
fontWeight: FontWeight.bold,
|
||||
fontSize: 20,
|
||||
return SafeArea(
|
||||
child: Drawer(
|
||||
//backgroundColor: MzanziInnovationHub.of(context)!.theme.primaryColor(),
|
||||
child: SingleChildScrollView(
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
children: [
|
||||
Container(
|
||||
color: MzanziInnovationHub.of(context)!.theme.secondaryColor(),
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
Padding(
|
||||
padding: const EdgeInsets.all(5.0),
|
||||
child: Text(
|
||||
"Notifications",
|
||||
style: TextStyle(
|
||||
color: MzanziInnovationHub.of(context)!
|
||||
.theme
|
||||
.primaryColor(),
|
||||
fontWeight: FontWeight.bold,
|
||||
fontSize: 20,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
displayNotification(),
|
||||
// ListView.separated(
|
||||
// shrinkWrap: true,
|
||||
// physics: const NeverScrollableScrollPhysics(),
|
||||
// separatorBuilder: (BuildContext context, index) {
|
||||
// return Divider(
|
||||
// color: MzanziInnovationHub.of(context)!.theme.secondaryColor(),
|
||||
// );
|
||||
// },
|
||||
// itemCount: widget.notifications.length,
|
||||
// itemBuilder: (context, index) {
|
||||
// //final patient = widget.patients[index].id_no.contains(widget.searchString);
|
||||
// //print(index);
|
||||
// return displayNotifications(index);
|
||||
// },
|
||||
// ),
|
||||
],
|
||||
),
|
||||
));
|
||||
displayNotification(),
|
||||
// ListView.separated(
|
||||
// shrinkWrap: true,
|
||||
// physics: const NeverScrollableScrollPhysics(),
|
||||
// separatorBuilder: (BuildContext context, index) {
|
||||
// return Divider(
|
||||
// color: MzanziInnovationHub.of(context)!.theme.secondaryColor(),
|
||||
// );
|
||||
// },
|
||||
// itemCount: widget.notifications.length,
|
||||
// itemBuilder: (context, index) {
|
||||
// //final patient = widget.patients[index].id_no.contains(widget.searchString);
|
||||
// //print(index);
|
||||
// return displayNotifications(index);
|
||||
// },
|
||||
// ),
|
||||
],
|
||||
),
|
||||
)),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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<MIHAbout> {
|
||||
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<MIHAbout> {
|
||||
// //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<MIHAbout> {
|
||||
List<Widget> 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<MIHAbout> {
|
||||
//==================================================================
|
||||
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<MIHAbout> {
|
||||
//==================================================================
|
||||
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<MIHAbout> {
|
||||
//==================================================================
|
||||
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<MIHAbout> {
|
||||
//==================================================================
|
||||
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<MIHAbout> {
|
||||
//==================================================================
|
||||
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<MIHAbout> {
|
||||
//==================================================================
|
||||
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<MIHAbout> {
|
||||
return socials;
|
||||
}
|
||||
|
||||
Future<void> launchSocialUrl(Uri linkUrl) async {
|
||||
if (!await launchUrl(linkUrl)) {
|
||||
throw Exception('Could not launch $linkUrl');
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
super.dispose();
|
||||
|
||||
@@ -103,10 +103,13 @@ class _BuildFileViewState extends State<BuildFileView> {
|
||||
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<BuildFileView> {
|
||||
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,
|
||||
|
||||
@@ -210,10 +210,12 @@ class _FullScreenFileViewerState extends State<FullScreenFileViewer> {
|
||||
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,
|
||||
|
||||
@@ -1203,7 +1203,7 @@ packages:
|
||||
source: hosted
|
||||
version: "2.2.2"
|
||||
url_launcher:
|
||||
dependency: transitive
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: url_launcher
|
||||
sha256: "9d06212b1362abc2f0f0d78e6f09f726608c74e3b9462e8368bb03314aa8d603"
|
||||
|
||||
@@ -16,7 +16,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
|
||||
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
|
||||
# In Windows, build-name is used as the major, minor, and patch parts
|
||||
# of the product and file versions while build-number is used as the build suffix.
|
||||
version: 1.0.0+1
|
||||
version: 1.0.0+2
|
||||
|
||||
environment:
|
||||
sdk: '>=3.2.4 <4.0.0'
|
||||
@@ -65,6 +65,7 @@ dependencies:
|
||||
flutter_launcher_icons: ^0.13.1
|
||||
# flutter_barcode_scanner: ^2.0.0
|
||||
barcode_widget: ^2.0.4
|
||||
url_launcher: ^6.3.1
|
||||
|
||||
dev_dependencies:
|
||||
flutter_test:
|
||||
|
||||
Reference in New Issue
Block a user