From 302066b7bc3e2ef9f35caba19617700ddeac95bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Primo=C5=BE=20Ratej?= Date: Thu, 2 Feb 2023 19:19:01 +0100 Subject: [PATCH] showOpener and handle redirect accordingly. --- lib/pages/opener.dart | 2 +- lib/pages/web_view.dart | 2 +- lib/util/extensions.dart | 20 +++++++++++++++++--- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/lib/pages/opener.dart b/lib/pages/opener.dart index 30c5c61..c6ee49b 100644 --- a/lib/pages/opener.dart +++ b/lib/pages/opener.dart @@ -121,7 +121,7 @@ class OpenerState extends ConsumerState { // Set the manifestStateProvider with the manifest value so that it's globally accessible ref .read(humHubProvider) - .setInstance(HumHub(manifest: manifest, isHideDialog: true)); + .setInstance(HumHub(manifest: manifest)); redirect(); } } diff --git a/lib/pages/web_view.dart b/lib/pages/web_view.dart index 10b5107..a3952f8 100644 --- a/lib/pages/web_view.dart +++ b/lib/pages/web_view.dart @@ -29,7 +29,7 @@ class WebViewAppState extends ConsumerState { Widget build(BuildContext context) { return SafeArea( child: WillPopScope( - onWillPop: () => webViewController.exitApp(context), + onWillPop: () => webViewController.exitApp(context, ref), child: Scaffold( key: scaffoldKey, body: WebViewWidget(controller: webViewController)), diff --git a/lib/util/extensions.dart b/lib/util/extensions.dart index d784efe..458e114 100644 --- a/lib/util/extensions.dart +++ b/lib/util/extensions.dart @@ -1,6 +1,9 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:humhub/models/manifest.dart'; +import 'package:humhub/pages/opener.dart'; +import 'package:humhub/util/providers.dart'; import 'package:webview_flutter/webview_flutter.dart'; extension MyCookies on WebViewCookieManager { @@ -16,7 +19,7 @@ extension MyCookies on WebViewCookieManager { } extension MyWebViewController on WebViewController { - Future exitApp(BuildContext context) async { + Future exitApp(BuildContext context, ref) async { bool canGoBack = await this.canGoBack(); if (canGoBack) { goBack(); @@ -33,7 +36,9 @@ extension MyWebViewController on WebViewController { child: const Text('No'), ), TextButton( - onPressed: () => SystemNavigator.pop(), + onPressed: () { + closeOrOpenDialog(context, ref); + }, child: const Text('Yes'), ), ], @@ -42,6 +47,15 @@ extension MyWebViewController on WebViewController { return exitConfirmed ?? false; } } + + closeOrOpenDialog(BuildContext context, WidgetRef ref) { + var isHide = ref.read(humHubProvider).isHideDialog; + isHide + ? SystemNavigator.pop() + : Navigator.of(context).pushAndRemoveUntil( + MaterialPageRoute(builder: (context) => const Opener()), + (Route route) => false); + } } class HexColor extends Color { @@ -54,4 +68,4 @@ class HexColor extends Color { } HexColor(final String hexColor) : super(_getColorFromHex(hexColor)); -} \ No newline at end of file +}