From 192a3835d69b2a7a6ab39f6a505cd25f5b13087a Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Sun, 9 Aug 2020 09:13:15 +0300 Subject: [PATCH] implemented payment method selection & payment details dialog. Added Calendar events to add remindar in calendar for appointment. --- lib/pages/BookAppointment/BookSuccess.dart | 2 + lib/pages/ToDoList/payment_method_select.dart | 17 ++++- lib/widgets/in_app_browser/InAppBrowser.dart | 67 +++++++++++++++++++ pubspec.yaml | 4 ++ 4 files changed, 88 insertions(+), 2 deletions(-) create mode 100644 lib/widgets/in_app_browser/InAppBrowser.dart diff --git a/lib/pages/BookAppointment/BookSuccess.dart b/lib/pages/BookAppointment/BookSuccess.dart index 4745abe3..7025a90e 100644 --- a/lib/pages/BookAppointment/BookSuccess.dart +++ b/lib/pages/BookAppointment/BookSuccess.dart @@ -257,6 +257,8 @@ class _BookSuccessState extends State { ); } + + _getTextStyling() { return TextStyle(fontSize: 14.0, color: Colors.white, letterSpacing: 0.7); } diff --git a/lib/pages/ToDoList/payment_method_select.dart b/lib/pages/ToDoList/payment_method_select.dart index 6ee0daef..5f3eff18 100644 --- a/lib/pages/ToDoList/payment_method_select.dart +++ b/lib/pages/ToDoList/payment_method_select.dart @@ -1,6 +1,8 @@ import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; +import 'package:diplomaticquarterapp/widgets/in_app_browser/InAppBrowser.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_inappwebview/flutter_inappwebview.dart'; class PaymentMethod extends StatefulWidget { @override @@ -181,9 +183,9 @@ class _PaymentMethodState extends State { borderRadius: BorderRadius.circular(10), side: selectedPaymentMethod == "installment" ? BorderSide( - color: Colors.green, width: 5.0) + color: Colors.green, width: 5.0) : BorderSide( - color: Colors.transparent, width: 0.0), + color: Colors.transparent, width: 0.0), ), child: Container( height: 120.0, @@ -222,6 +224,7 @@ class _PaymentMethodState extends State { onPressed: () { // navigateToBookSuccess(context); // insertAppointment(context, widget.doctor); + openPayment(); }, child: Text(TranslationBase.of(context).confirm, style: TextStyle(fontSize: 18.0)), @@ -231,6 +234,16 @@ class _PaymentMethodState extends State { ); } + openPayment() { + MyInAppBrowser browser = new MyInAppBrowser(onExitCallback: onBrowserExit); + + browser.openUrl(url: "data:text/html;base64,PGh0bWw+IDxoZWFkPjwvaGVhZD48Ym9keT48Zm9ybSBpZD0icGF5bWVudEZvcm0iIGFjdGlvbj0iaHR0cHM6Ly9obWd3ZWJzZXJ2aWNlcy5jb20vUGF5Rm9ydFdlYkxpdmUvcGFnZXMvU2VuZFBheUZvcnRSZXF1ZXN0LmFzcHgiIG1ldGhvZD0icG9zdCI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQW1vdW50IiB2YWx1ZT0iMTIyIj48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJQcm9qSUQiIHZhbHVlPSIxMiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iT3JkZXJfRGVzYyIgdmFsdWU9IkFkdmFuY2UgUGF5bWVudCI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iT3JkZXJJRCIgdmFsdWU9IjEyLTEyMzE3NTUtMTU5NjY0MDY0MSI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iUGF5bWVudE9wdGlvbiIgdmFsdWU9Ik1BREEiPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkVtYWlsIiB2YWx1ZT0iVGFtZXIuZmFuYXNoZWhAZ21haWwuY29tIj48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTZXJ2SUQiIHZhbHVlPSIzIiAgPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkNoYW5uZWxJRCIgdmFsdWU9IjIiICA+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iTGFuZyIgdmFsdWU9IkVOIiAgPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlJldHVyblVSTCIgdmFsdWU9IiIgID48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDdXN0TmFtZSIgdmFsdWU9IlRBKioqKiIgPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlBhdGllbnRPdXRTQSIgdmFsdWU9ImZhbHNlIiA+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iUGF0aWVudFR5cGVJRCIgdmFsdWU9IjEiID48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJEZXZpY2VUb2tlbiIgdmFsdWU9InVuZGVmaW5lZCx1bmRlZmluZWQiID48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJMb25naXR1ZGUiIHZhbHVlPSJ1bmRlZmluZWQiID48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJMYXRpdHVkZSIgdmFsdWU9InVuZGVmaW5lZCIgPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkxpdmVfU2VydmljZUlEIiB2YWx1ZT0idW5kZWZpbmVkIiA+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQ3VzdElEIiB2YWx1ZT0iMTIzMTc1NSIgID48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJSZXNwb25zZUNvbnRpbnVlVVJMIiB2YWx1ZT0iaHR0cDovL2htZy5jb20vRG9jdW1lbnRzL3N1Y2Nlc3MuaHRtbCIgPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkJhY2tDbGlja1VybCIgdmFsdWU9Imh0dHA6Ly9obWcuY29tL0RvY3VtZW50cy9zdWNjZXNzLmh0bWwiID48L2Zvcm0+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGF5bWVudEZvcm0iKS5zdWJtaXQoKTsgPC9zY3JpcHQ+PC9ib2R5PjwvaHRtbD4="); + } + + onBrowserExit() { + print("onBrowserExit Called!!!!"); + } + updateSelectedPaymentMethod(String selectedMethod) { setState(() { selectedPaymentMethod = selectedMethod; diff --git a/lib/widgets/in_app_browser/InAppBrowser.dart b/lib/widgets/in_app_browser/InAppBrowser.dart new file mode 100644 index 00000000..4f0dd644 --- /dev/null +++ b/lib/widgets/in_app_browser/InAppBrowser.dart @@ -0,0 +1,67 @@ +import 'package:flutter_inappwebview/flutter_inappwebview.dart'; + +class MyInAppBrowser extends InAppBrowser { + static List successURLS = ['success', 'PayFortResponse', 'PayFortSucess']; + + static List errorURLS = ['PayfortCancel']; + + final Function onExitCallback; + + MyInAppBrowser({this.onExitCallback}); + + Future onBrowserCreated() async { + print("\n\nBrowser Created!\n\n"); + } + + @override + Future onLoadStart(String url) async { + print("\n\nStarted $url\n\n"); + } + + @override + Future onLoadStop(String url) async { + print("\n\nStopped $url\n\n"); + } + + @override + void onLoadError(String url, int code, String message) { + print("Can't load $url.. Error: $message"); + } + + @override + void onProgressChanged(int progress) { + print("Progress: $progress"); + } + + @override + void onExit() { + print("\n\nBrowser closed!\n\n"); + onExitCallback(); + } + + @override + Future shouldOverrideUrlLoading( + ShouldOverrideUrlLoadingRequest shouldOverrideUrlLoadingRequest) async { + print("\n\n override ${shouldOverrideUrlLoadingRequest.url}\n\n"); + return ShouldOverrideUrlLoadingAction.ALLOW; + } + + @override + void onLoadResource(LoadedResource response) { + print("Started at: " + + response.startTime.toString() + + "ms ---> duration: " + + response.duration.toString() + + "ms " + + response.url); + } + + @override + void onConsoleMessage(ConsoleMessage consoleMessage) { + print(""" + console output: + message: ${consoleMessage.message} + messageLevel: ${consoleMessage.messageLevel.toValue()} + """); + } +} diff --git a/pubspec.yaml b/pubspec.yaml index 464d6ef4..1b6090af 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -81,8 +81,12 @@ dependencies: # Location Helper map_launcher: ^0.8.1 + #Calendar Events manage_calendar_events: ^1.0.2 + #InAppBrowser + flutter_inappwebview: ^4.0.0+4 +