130 lines
5.2 KiB
Dart
130 lines
5.2 KiB
Dart
import 'dart:io' show Platform;
|
|
|
|
import 'package:flutter/material.dart';
|
|
import 'package:flutter/scheduler.dart';
|
|
import 'package:flutter_inappwebview/flutter_inappwebview.dart';
|
|
import 'package:hub/app_state.dart';
|
|
import 'package:hub/flutter_flow/nav/nav.dart';
|
|
import 'package:hub/shared/utils/webview_util.dart';
|
|
import 'package:url_launcher/url_launcher_string.dart';
|
|
import 'package:webview_flutter/webview_flutter.dart';
|
|
|
|
class ReservationPageWidget extends StatefulWidget {
|
|
final String freToken = AppState().userUUID;
|
|
final String freUserData = "{\"name\": \"${AppState().name}\", " +
|
|
"\"email\": \"${AppState().email}\"," +
|
|
"\"dev_id\": \"${AppState().devUUID}\"," +
|
|
"\"created_at\": \"${AppState().createdAt}\"," +
|
|
"\"updated_at\": \"0000-00-00 00:00:00\"," +
|
|
"\"status\": \"A\" }";
|
|
|
|
final String clientId = AppState().cliUUID;
|
|
|
|
@override
|
|
_ReservationPageWidgetState createState() => _ReservationPageWidgetState();
|
|
}
|
|
|
|
class _ReservationPageWidgetState extends State<ReservationPageWidget> {
|
|
late InAppWebViewController _controllerIOS;
|
|
late WebViewController _controllerAll;
|
|
late String url;
|
|
late String name;
|
|
late String email;
|
|
late String userUUID;
|
|
late String created_at;
|
|
|
|
@override
|
|
void initState() {
|
|
super.initState();
|
|
name = AppState().name;
|
|
email = AppState().email;
|
|
userUUID = AppState().userUUID;
|
|
created_at = AppState().createdAt;
|
|
url = 'https://hub.freaccess.com.br/hub/reservation/${widget.clientId}';
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return SafeArea(
|
|
child: Scaffold(
|
|
body: Platform.isIOS
|
|
? InAppWebView(
|
|
initialUrlRequest: URLRequest(url: WebUri(url)),
|
|
initialSettings: InAppWebViewSettings(
|
|
allowsBackForwardNavigationGestures: true,
|
|
javaScriptEnabled: true,
|
|
),
|
|
onWebViewCreated: (controller) async {
|
|
_controllerIOS = controller;
|
|
},
|
|
onLoadStop: (controller, url) async {
|
|
await controller.evaluateJavascript(
|
|
source:
|
|
"window.localStorage.setItem('fre-token', '\"${widget.freToken}\"')");
|
|
await controller.evaluateJavascript(
|
|
source:
|
|
"window.localStorage.setItem('fre-user-data', '${widget.freUserData}')");
|
|
await controller.evaluateJavascript(
|
|
source:
|
|
"window.localStorage.setItem('enableBackButton', 'true')");
|
|
},
|
|
onUpdateVisitedHistory: (controller, uri, isVisited) {
|
|
if (uri.toString().contains('/hub/home')) {
|
|
context.pop();
|
|
}
|
|
},
|
|
)
|
|
: WebViewWidget(
|
|
controller: _controllerAll = WebViewController()
|
|
..clearCache()
|
|
..clearLocalStorage()
|
|
..setJavaScriptMode(JavaScriptMode.unrestricted)
|
|
..setBackgroundColor(const Color(0x00000000))
|
|
..setNavigationDelegate(
|
|
NavigationDelegate(
|
|
onProgress: (int progress) {},
|
|
onPageStarted: (String url) {
|
|
final String token =
|
|
"localStorage.setItem('fre-token', '\"${widget.freToken}\"');";
|
|
final String data =
|
|
"localStorage.setItem('fre-user-data', '${widget.freUserData}');";
|
|
const String backNavigation =
|
|
"localStorage.setItem('enableBackButton', 'true');";
|
|
|
|
_controllerAll.runJavaScript(token);
|
|
_controllerAll.runJavaScript(data);
|
|
_controllerAll.runJavaScript(backNavigation);
|
|
},
|
|
onPageFinished: (String url) {
|
|
bool isDarkMode = SchedulerBinding.instance
|
|
.platformDispatcher.platformBrightness ==
|
|
Brightness.dark;
|
|
|
|
if (isDarkMode) {
|
|
_controllerAll
|
|
.runJavaScript(WebviewUtil.jsEnableDarkMode);
|
|
}
|
|
},
|
|
onNavigationRequest: (NavigationRequest request) {
|
|
if (request.url.startsWith('http') ||
|
|
request.url.startsWith(
|
|
'https://api.whatsapp.com/send') ||
|
|
request.url.startsWith('https://wa.me')) {
|
|
launchUrlString(request.url);
|
|
return NavigationDecision.prevent;
|
|
}
|
|
return NavigationDecision.prevent;
|
|
},
|
|
onUrlChange: (url) {
|
|
if (url.url.toString().contains('/hub/home')) {
|
|
context.pop();
|
|
}
|
|
}),
|
|
)
|
|
..loadRequest(Uri.parse(url)),
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|