Merge pull request Tile-Long-Press-For-More_Details

Tile-Long-Press-For-More_Details
This commit is contained in:
yaso-meth
2024-11-14 14:44:05 +02:00
committed by GitHub
12 changed files with 126 additions and 165 deletions

View File

@@ -1,6 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:patient_manager/mih_components/mih_layout/mih_app_drawer.dart';
import 'mih_app_drawer.dart';
import 'mih_body.dart'; import 'mih_body.dart';
import 'mih_header.dart'; import 'mih_header.dart';

View File

@@ -1,10 +1,10 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:patient_manager/mih_components/mih_layout/mih_action.dart';
import 'package:pdf/pdf.dart'; import 'package:pdf/pdf.dart';
import 'package:printing/printing.dart'; import 'package:printing/printing.dart';
import '../../mih_objects/arguments.dart'; import '../../mih_objects/arguments.dart';
import '../mih_pop_up_messages/mih_loading_circle.dart'; import '../mih_pop_up_messages/mih_loading_circle.dart';
import 'mih_action.dart';
class MIHPrintPreview extends StatefulWidget { class MIHPrintPreview extends StatefulWidget {
final PrintPreviewArguments arguments; final PrintPreviewArguments arguments;

View File

@@ -1,13 +1,11 @@
import 'package:Mzansi_Innovation_Hub/mih_components/mih_yt_video_player.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import '../../main.dart'; import '../../main.dart';
import 'package:youtube_player_flutter/youtube_player_flutter.dart';
import 'mih_window.dart'; import 'mih_window.dart';
class MIHTile extends StatefulWidget { class MIHTile extends StatefulWidget {
final String tileName; final String tileName;
final String? videoYTLink; final String? videoID;
final Widget tileIcon; final Widget tileIcon;
final void Function() onTap; final void Function() onTap;
// final Widget tileIcon; // final Widget tileIcon;
@@ -18,7 +16,7 @@ class MIHTile extends StatefulWidget {
super.key, super.key,
required this.onTap, required this.onTap,
required this.tileName, required this.tileName,
this.videoYTLink, this.videoID,
required this.tileIcon, required this.tileIcon,
required this.p, required this.p,
required this.s, required this.s,
@@ -31,28 +29,9 @@ class MIHTile extends StatefulWidget {
class _MIHTileState extends State<MIHTile> { class _MIHTileState extends State<MIHTile> {
late Color mainC; late Color mainC;
late Color secondC; late Color secondC;
late YoutubePlayerController videoController;
String getVideID() {
if (widget.videoYTLink != null) {
return YoutubePlayer.convertUrlToId(widget.videoYTLink!) as String;
} else {
return "";
}
}
// void listener() {
// if (_isPlayerReady && mounted && !videoController.value.isFullScreen) {
// setState(() {
// _playerState = videoController.value.playerState;
// _videoMetaData = videoController.metadata;
// });
// }
// }
@override @override
void dispose() { void dispose() {
videoController.dispose();
super.dispose(); super.dispose();
} }
@@ -60,19 +39,11 @@ class _MIHTileState extends State<MIHTile> {
void initState() { void initState() {
mainC = widget.p; mainC = widget.p;
secondC = widget.s; secondC = widget.s;
videoController = YoutubePlayerController(
initialVideoId: getVideID(),
flags: YoutubePlayerFlags(
autoPlay: false,
mute: true,
isLive: false,
));
super.initState(); super.initState();
} }
void displayHint() { void displayHint() {
if (widget.videoYTLink != null) { if (widget.videoID != null) {
showDialog( showDialog(
context: context, context: context,
builder: (context) { builder: (context) {
@@ -84,20 +55,7 @@ class _MIHTileState extends State<MIHTile> {
Navigator.pop(context); Navigator.pop(context);
}, },
windowBody: [ windowBody: [
YoutubePlayerBuilder( MIHYTVideoPlayer(videoYTLink: widget.videoID!),
player: YoutubePlayer(
controller: videoController,
showVideoProgressIndicator: true,
progressIndicatorColor: Colors.amber,
progressColors: ProgressBarColors(
playedColor: Colors.amber,
handleColor: Colors.amberAccent,
),
),
builder: (context, player) {
return player;
},
),
], ],
); );
}, },
@@ -131,9 +89,9 @@ class _MIHTileState extends State<MIHTile> {
borderRadius: BorderRadius.circular(80), borderRadius: BorderRadius.circular(80),
// ho // ho
onTap: widget.onTap, onTap: widget.onTap,
// onLongPress: () { onLongPress: () {
// displayHint(); displayHint();
// }, },
// hoverDuration: , // hoverDuration: ,
splashColor: splashColor:
MzanziInnovationHub.of(context)!.theme.highlightColor(), MzanziInnovationHub.of(context)!.theme.highlightColor(),
@@ -143,26 +101,6 @@ class _MIHTileState extends State<MIHTile> {
), ),
), ),
), ),
// Material(
// color: mainC,
// borderRadius: BorderRadius.circular(80),
// child: Ink(
// // width: 200,
// // height: 200,
// padding: const EdgeInsets.all(20),
// child: InkWell(
// onTap: widget.onTap,
// hoverDuration: Duration(seconds: 2),
// highlightColor:
// MzanziInnovationHub.of(context)!.theme.messageTextColor(),
// child: SizedBox(
// height: 200,
// width: 200,
// child: widget.tileIcon,
// ),
// ),
// ),
// ),
const SizedBox(height: 10), const SizedBox(height: 10),
SizedBox( SizedBox(
width: 300, width: 300,

View File

@@ -0,0 +1,46 @@
import 'package:flutter/material.dart';
import 'package:youtube_player_iframe/youtube_player_iframe.dart';
class MIHYTVideoPlayer extends StatefulWidget {
final String videoYTLink;
const MIHYTVideoPlayer({
super.key,
required this.videoYTLink,
});
@override
State<MIHYTVideoPlayer> createState() => _MIHYTVideoPlayerState();
}
class _MIHYTVideoPlayerState extends State<MIHYTVideoPlayer> {
late YoutubePlayerController _controller;
@override
void dispose() {
_controller.close();
super.dispose();
}
@override
void initState() {
_controller = YoutubePlayerController(
params: const YoutubePlayerParams(
enableCaption: false,
showControls: true,
mute: false,
showFullscreenButton: false,
loop: false,
),
);
_controller.loadVideoById(videoId: widget.videoYTLink);
super.initState();
}
@override
Widget build(BuildContext context) {
return YoutubePlayer(
controller: _controller,
aspectRatio: 16 / 9,
);
}
}

View File

@@ -80,6 +80,7 @@ class _MIHHomeState extends State<MIHHome> {
void setAppsNewPersonal(List<MIHTile> tileList) { void setAppsNewPersonal(List<MIHTile> tileList) {
if (widget.signedInUser.fname == "") { if (widget.signedInUser.fname == "") {
tileList.add(MIHTile( tileList.add(MIHTile(
videoID: "jFV3NN65DtQ",
onTap: () { onTap: () {
Navigator.of(context).pushNamed('/user-profile', Navigator.of(context).pushNamed('/user-profile',
arguments: AppProfileUpdateArguments( arguments: AppProfileUpdateArguments(
@@ -99,6 +100,7 @@ class _MIHHomeState extends State<MIHHome> {
void setAppsNewBusiness(List<MIHTile> tileList) { void setAppsNewBusiness(List<MIHTile> tileList) {
tileList.add(MIHTile( tileList.add(MIHTile(
videoID: "Nfp4pVBZL78",
onTap: () { onTap: () {
Navigator.of(context).popAndPushNamed( Navigator.of(context).popAndPushNamed(
'/business-profile/set-up', '/business-profile/set-up',
@@ -119,7 +121,7 @@ class _MIHHomeState extends State<MIHHome> {
void setAppsPersonal(List<MIHTile> tileList) { void setAppsPersonal(List<MIHTile> tileList) {
ImageProvider logo = MzanziInnovationHub.of(context)!.theme.logoImage(); ImageProvider logo = MzanziInnovationHub.of(context)!.theme.logoImage();
tileList.add(MIHTile( tileList.add(MIHTile(
videoYTLink: "https://www.youtube.com/watch?v=P2bM9eosJ_A", videoID: "P2bM9eosJ_A",
onTap: () { onTap: () {
Navigator.of(context).pushNamed( Navigator.of(context).pushNamed(
'/user-profile', '/user-profile',
@@ -136,6 +138,7 @@ class _MIHHomeState extends State<MIHHome> {
s: getSec(), s: getSec(),
)); ));
tileList.add(MIHTile( tileList.add(MIHTile(
videoID: "NUDdoWrbXNc",
onTap: () { onTap: () {
Navigator.of(context).pushNamed('/patient-profile', Navigator.of(context).pushNamed('/patient-profile',
arguments: PatientViewArguments( arguments: PatientViewArguments(
@@ -204,6 +207,7 @@ class _MIHHomeState extends State<MIHHome> {
s: getSec(), s: getSec(),
)); ));
tileList.add(MIHTile( tileList.add(MIHTile(
videoID: "hbKhlmY_56U",
onTap: () { onTap: () {
Navigator.of(context).pushNamed( Navigator.of(context).pushNamed(
'/about', '/about',
@@ -230,6 +234,7 @@ class _MIHHomeState extends State<MIHHome> {
void setAppsBusiness(List<MIHTile> tileList) { void setAppsBusiness(List<MIHTile> tileList) {
tileList.add(MIHTile( tileList.add(MIHTile(
videoID: "NWyJZq2ZYOM",
onTap: () { onTap: () {
Navigator.of(context).pushNamed( Navigator.of(context).pushNamed(
'/business-profile/manage', '/business-profile/manage',
@@ -273,6 +278,7 @@ class _MIHHomeState extends State<MIHHome> {
// s: getSec(), // s: getSec(),
// )); // ));
tileList.add(MIHTile( tileList.add(MIHTile(
videoID: "D6q2qIavoiY",
onTap: () { onTap: () {
Navigator.of(context).pushNamed( Navigator.of(context).pushNamed(
'/patient-manager', '/patient-manager',

View File

@@ -1,6 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:patient_manager/mih_components/mih_inputs_and_buttons/mih_text_input.dart';
import '../../main.dart'; import '../../main.dart';
import '../../mih_components/mih_inputs_and_buttons/mih_text_input.dart';
import '../../mih_objects/app_user.dart'; import '../../mih_objects/app_user.dart';
import '../../mih_objects/arguments.dart'; import '../../mih_objects/arguments.dart';
import '../../mih_objects/patients.dart'; import '../../mih_objects/patients.dart';

View File

@@ -1,5 +1,4 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:youtube_player_flutter/youtube_player_flutter.dart';
import '../../mih_components/mih_layout/mih_action.dart'; import '../../mih_components/mih_layout/mih_action.dart';
import '../../mih_components/mih_layout/mih_body.dart'; import '../../mih_components/mih_layout/mih_body.dart';
@@ -14,15 +13,15 @@ class MIHTest extends StatefulWidget {
} }
class _MIHTestState extends State<MIHTest> { class _MIHTestState extends State<MIHTest> {
late YoutubePlayerController videoController; // late YoutubePlayerController videoController;
String videoLink = "https://www.youtube.com/watch?v=P2bM9eosJ_A"; // String videoLink = "https://www.youtube.com/watch?v=P2bM9eosJ_A";
@override // @override
void initState() { // void initState() {
videoController = YoutubePlayerController( // videoController = YoutubePlayerController(
initialVideoId: "P2bM9eosJ_A", // initialVideoId: "P2bM9eosJ_A",
); // );
super.initState(); // super.initState();
} // }
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@@ -54,9 +53,9 @@ class _MIHTestState extends State<MIHTest> {
body: MIHBody( body: MIHBody(
borderOn: false, borderOn: false,
bodyItems: [ bodyItems: [
YoutubePlayer( // YoutubePlayer(
controller: videoController, // controller: videoController,
), // ),
], ],
), ),
actionDrawer: null, actionDrawer: null,

View File

@@ -8,7 +8,6 @@ import Foundation
import app_links import app_links
import device_info_plus import device_info_plus
import firebase_core import firebase_core
import flutter_inappwebview_macos
import geolocator_apple import geolocator_apple
import no_screenshot import no_screenshot
import path_provider_foundation import path_provider_foundation
@@ -16,12 +15,12 @@ import printing
import shared_preferences_foundation import shared_preferences_foundation
import syncfusion_pdfviewer_macos import syncfusion_pdfviewer_macos
import url_launcher_macos import url_launcher_macos
import webview_flutter_wkwebview
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
AppLinksMacosPlugin.register(with: registry.registrar(forPlugin: "AppLinksMacosPlugin")) AppLinksMacosPlugin.register(with: registry.registrar(forPlugin: "AppLinksMacosPlugin"))
DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin")) DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin"))
FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin")) FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin"))
InAppWebViewFlutterPlugin.register(with: registry.registrar(forPlugin: "InAppWebViewFlutterPlugin"))
GeolocatorPlugin.register(with: registry.registrar(forPlugin: "GeolocatorPlugin")) GeolocatorPlugin.register(with: registry.registrar(forPlugin: "GeolocatorPlugin"))
NoScreenshotPlugin.register(with: registry.registrar(forPlugin: "NoScreenshotPlugin")) NoScreenshotPlugin.register(with: registry.registrar(forPlugin: "NoScreenshotPlugin"))
PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
@@ -29,4 +28,5 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin"))
SyncfusionFlutterPdfViewerPlugin.register(with: registry.registrar(forPlugin: "SyncfusionFlutterPdfViewerPlugin")) SyncfusionFlutterPdfViewerPlugin.register(with: registry.registrar(forPlugin: "SyncfusionFlutterPdfViewerPlugin"))
UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin")) UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin"))
FLTWebViewFlutterPlugin.register(with: registry.registrar(forPlugin: "FLTWebViewFlutterPlugin"))
} }

View File

@@ -406,70 +406,6 @@ packages:
description: flutter description: flutter
source: sdk source: sdk
version: "0.0.0" version: "0.0.0"
flutter_inappwebview:
dependency: transitive
description:
name: flutter_inappwebview
sha256: "80092d13d3e29b6227e25b67973c67c7210bd5e35c4b747ca908e31eb71a46d5"
url: "https://pub.dev"
source: hosted
version: "6.1.5"
flutter_inappwebview_android:
dependency: transitive
description:
name: flutter_inappwebview_android
sha256: "62557c15a5c2db5d195cb3892aab74fcaec266d7b86d59a6f0027abd672cddba"
url: "https://pub.dev"
source: hosted
version: "1.1.3"
flutter_inappwebview_internal_annotations:
dependency: transitive
description:
name: flutter_inappwebview_internal_annotations
sha256: "5f80fd30e208ddded7dbbcd0d569e7995f9f63d45ea3f548d8dd4c0b473fb4c8"
url: "https://pub.dev"
source: hosted
version: "1.1.1"
flutter_inappwebview_ios:
dependency: transitive
description:
name: flutter_inappwebview_ios
sha256: "5818cf9b26cf0cbb0f62ff50772217d41ea8d3d9cc00279c45f8aabaa1b4025d"
url: "https://pub.dev"
source: hosted
version: "1.1.2"
flutter_inappwebview_macos:
dependency: transitive
description:
name: flutter_inappwebview_macos
sha256: c1fbb86af1a3738e3541364d7d1866315ffb0468a1a77e34198c9be571287da1
url: "https://pub.dev"
source: hosted
version: "1.1.2"
flutter_inappwebview_platform_interface:
dependency: transitive
description:
name: flutter_inappwebview_platform_interface
sha256: cf5323e194096b6ede7a1ca808c3e0a078e4b33cc3f6338977d75b4024ba2500
url: "https://pub.dev"
source: hosted
version: "1.3.0+1"
flutter_inappwebview_web:
dependency: transitive
description:
name: flutter_inappwebview_web
sha256: "55f89c83b0a0d3b7893306b3bb545ba4770a4df018204917148ebb42dc14a598"
url: "https://pub.dev"
source: hosted
version: "1.1.2"
flutter_inappwebview_windows:
dependency: transitive
description:
name: flutter_inappwebview_windows
sha256: "8b4d3a46078a2cdc636c4a3d10d10f2a16882f6be607962dbfff8874d1642055"
url: "https://pub.dev"
source: hosted
version: "0.6.0"
flutter_lints: flutter_lints:
dependency: "direct dev" dependency: "direct dev"
description: description:
@@ -1445,6 +1381,38 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.0.1" version: "3.0.1"
webview_flutter:
dependency: transitive
description:
name: webview_flutter
sha256: ec81f57aa1611f8ebecf1d2259da4ef052281cb5ad624131c93546c79ccc7736
url: "https://pub.dev"
source: hosted
version: "4.9.0"
webview_flutter_android:
dependency: transitive
description:
name: webview_flutter_android
sha256: "47a8da40d02befda5b151a26dba71f47df471cddd91dfdb7802d0a87c5442558"
url: "https://pub.dev"
source: hosted
version: "3.16.9"
webview_flutter_platform_interface:
dependency: transitive
description:
name: webview_flutter_platform_interface
sha256: d937581d6e558908d7ae3dc1989c4f87b786891ab47bb9df7de548a151779d8d
url: "https://pub.dev"
source: hosted
version: "2.10.0"
webview_flutter_wkwebview:
dependency: transitive
description:
name: webview_flutter_wkwebview
sha256: "3be297aa4ca78205abdd284cf55f168c35246c75b3079990ad8ba9d257681a30"
url: "https://pub.dev"
source: hosted
version: "3.16.2"
win32: win32:
dependency: transitive dependency: transitive
description: description:
@@ -1493,14 +1461,22 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.0.2" version: "2.0.2"
youtube_player_flutter: youtube_player_iframe:
dependency: "direct main" dependency: "direct main"
description: description:
name: youtube_player_flutter name: youtube_player_iframe
sha256: "4d14aa47f9c84929b5400a87ade4dcfdab87a2ca2e0b18ecc2ef852b1440e123" sha256: db0e7aab8ac29c9e417dd145b522b18085fb505b85eb3c61e893341b129fe980
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "9.1.1" version: "5.2.0"
youtube_player_iframe_web:
dependency: transitive
description:
name: youtube_player_iframe_web
sha256: "73dd7bbbe8a6519b5d58905122153e38591f753ad2df40b5328a9d8474e1587e"
url: "https://pub.dev"
source: hosted
version: "3.1.0"
sdks: sdks:
dart: ">=3.5.0 <3.6.0" dart: ">=3.5.0 <3.6.0"
flutter: ">=3.24.0" flutter: ">=3.24.0"

View File

@@ -1,5 +1,5 @@
name: patient_manager name: Mzansi_Innovation_Hub
description: "A new Flutter project." description: ""
# The following line prevents the package from being accidentally published to # The following line prevents the package from being accidentally published to
# pub.dev using `flutter pub publish`. This is preferred for private packages. # pub.dev using `flutter pub publish`. This is preferred for private packages.
publish_to: 'none' # Remove this line if you wish to publish to pub.dev publish_to: 'none' # Remove this line if you wish to publish to pub.dev
@@ -60,8 +60,8 @@ dependencies:
firebase_core: ^3.6.0 firebase_core: ^3.6.0
table_calendar: ^3.1.2 table_calendar: ^3.1.2
flutter_swipe_detector: ^2.0.0 flutter_swipe_detector: ^2.0.0
youtube_player_flutter: ^9.1.1 youtube_player_iframe: ^5.2.0
dev_dependencies: dev_dependencies:
flutter_test: flutter_test:
sdk: flutter sdk: flutter

View File

@@ -8,7 +8,6 @@
#include <app_links/app_links_plugin_c_api.h> #include <app_links/app_links_plugin_c_api.h>
#include <firebase_core/firebase_core_plugin_c_api.h> #include <firebase_core/firebase_core_plugin_c_api.h>
#include <flutter_inappwebview_windows/flutter_inappwebview_windows_plugin_c_api.h>
#include <geolocator_windows/geolocator_windows.h> #include <geolocator_windows/geolocator_windows.h>
#include <printing/printing_plugin.h> #include <printing/printing_plugin.h>
#include <syncfusion_pdfviewer_windows/syncfusion_pdfviewer_windows_plugin.h> #include <syncfusion_pdfviewer_windows/syncfusion_pdfviewer_windows_plugin.h>
@@ -19,8 +18,6 @@ void RegisterPlugins(flutter::PluginRegistry* registry) {
registry->GetRegistrarForPlugin("AppLinksPluginCApi")); registry->GetRegistrarForPlugin("AppLinksPluginCApi"));
FirebaseCorePluginCApiRegisterWithRegistrar( FirebaseCorePluginCApiRegisterWithRegistrar(
registry->GetRegistrarForPlugin("FirebaseCorePluginCApi")); registry->GetRegistrarForPlugin("FirebaseCorePluginCApi"));
FlutterInappwebviewWindowsPluginCApiRegisterWithRegistrar(
registry->GetRegistrarForPlugin("FlutterInappwebviewWindowsPluginCApi"));
GeolocatorWindowsRegisterWithRegistrar( GeolocatorWindowsRegisterWithRegistrar(
registry->GetRegistrarForPlugin("GeolocatorWindows")); registry->GetRegistrarForPlugin("GeolocatorWindows"));
PrintingPluginRegisterWithRegistrar( PrintingPluginRegisterWithRegistrar(

View File

@@ -5,7 +5,6 @@
list(APPEND FLUTTER_PLUGIN_LIST list(APPEND FLUTTER_PLUGIN_LIST
app_links app_links
firebase_core firebase_core
flutter_inappwebview_windows
geolocator_windows geolocator_windows
printing printing
syncfusion_pdfviewer_windows syncfusion_pdfviewer_windows