Skip to content

Commit

Permalink
Merge pull request #228 from humhub/f-fix-snack-bar
Browse files Browse the repository at this point in the history
Fix snack bar and reuse scaffoldMessenger on both flavors
  • Loading branch information
luke- committed Sep 12, 2024
2 parents 74b2288 + f2dd53a commit 73903f6
Show file tree
Hide file tree
Showing 9 changed files with 54 additions and 38 deletions.
1 change: 1 addition & 0 deletions lib/app_flavored.dart
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ class FlavoredAppState extends ConsumerState<FlavoredApp> {
child: OverrideLocale(
builder: (overrideLocale) => Builder(
builder: (context) => MaterialApp(
scaffoldMessengerKey: scaffoldMessengerStateKeyF,
debugShowCheckedModeBanner: false,
initialRoute: RouterF.initRoute,
routes: RouterF.routes,
Expand Down
3 changes: 2 additions & 1 deletion lib/app_opener.dart
Original file line number Diff line number Diff line change
Expand Up @@ -44,10 +44,11 @@ class OpenerAppState extends ConsumerState<OpenerApp> {
builder: (context, snap) {
if (snap.hasData) {
return MaterialApp(
navigatorKey: navigatorKey,
scaffoldMessengerKey: scaffoldMessengerStateKey,
debugShowCheckedModeBanner: false,
initialRoute: snap.data,
routes: MyRouter.routes,
navigatorKey: navigatorKey,
localizationsDelegates: AppLocalizations.localizationsDelegates,
supportedLocales: AppLocalizations.supportedLocales,
locale: overrideLocale,
Expand Down
3 changes: 2 additions & 1 deletion lib/flavored/util/router.f.dart
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:humhub/flavored/web_view.f.dart';

final GlobalKey<NavigatorState> navigatorKeyF = GlobalKey<NavigatorState>();
final GlobalKey<ScaffoldMessengerState> scaffoldMessengerStateKeyF = GlobalKey<ScaffoldMessengerState>();

NavigatorState? get navigator => navigatorKeyF.currentState;

Expand Down
14 changes: 7 additions & 7 deletions lib/flavored/web_view.f.dart
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import 'package:flutter_inappwebview/flutter_inappwebview.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:humhub/app_flavored.dart';
import 'package:humhub/flavored/models/humhub.f.dart';
import 'package:humhub/flavored/util/router.f.dart';
import 'package:humhub/util/auth_in_app_browser.dart';
import 'package:humhub/models/channel_message.dart';
import 'package:humhub/util/extensions.dart';
Expand Down Expand Up @@ -159,7 +160,6 @@ class FlavoredWebViewState extends ConsumerState<WebViewF> {
}

Future<bool> _onCreateWindow(InAppWebViewController controller, CreateWindowAction createWindowAction) async {
logDebug("onCreateWindow");
final urlToOpen = createWindowAction.request.url;
if (urlToOpen == null) return Future.value(false);
if (WebViewGlobalController.openCreateWindowInWebView(ref, urlToOpen.rawValue)) {
Expand Down Expand Up @@ -279,11 +279,11 @@ class FlavoredWebViewState extends ConsumerState<WebViewF> {
downloadStartRequest: downloadStartRequest,
controller: controller,
onSuccess: (File file, String filename) {
ScaffoldMessenger.of(context).showSnackBar(
scaffoldMessengerStateKeyF.currentState?.showSnackBar(
SnackBar(
content: Text('File downloaded: $filename'),
content: Text('${AppLocalizations.of(context)!.file_download}: $filename'),
action: SnackBarAction(
label: 'Open',
label: AppLocalizations.of(context)!.open,
onPressed: () {
// Open the downloaded file
OpenFile.open(file.path);
Expand All @@ -293,9 +293,9 @@ class FlavoredWebViewState extends ConsumerState<WebViewF> {
);
},
onError: (er) {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text('Something went wrong'),
scaffoldMessengerStateKeyF.currentState?.showSnackBar(
SnackBar(
content: Text(AppLocalizations.of(context)!.generic_error),
),
);
}).download();
Expand Down
4 changes: 4 additions & 0 deletions lib/l10n/app_de.arb
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,11 @@
"web_view_exit_popup_title": "Bist du sicher?",
"web_view_exit_popup_content": "Möchtest du die App verlassen?",

"file_download": "Datei heruntergeladen",
"generic_error": "Uups! Etwas ist schiefgelaufen.",

"connect": "Verbinden",
"open": "Öffnen",
"cancel": "Abbrechen",
"url": "URL",
"back": "Zurück",
Expand Down
3 changes: 3 additions & 0 deletions lib/l10n/app_en.arb
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,11 @@
"web_view_exit_popup_title": "Are you sure?",
"web_view_exit_popup_content": "Do you want to exit an App?",

"file_download": "File downloaded",
"generic_error": "Oops! Something went wrong.",

"connect": "Connect",
"open": "Open",
"cancel" : "Cancel",
"url": "url",
"back": "Back",
Expand Down
4 changes: 4 additions & 0 deletions lib/l10n/app_fr.arb
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,11 @@
"web_view_exit_popup_title": "Êtes-vous sûr ?",
"web_view_exit_popup_content": "Voulez-vous quitter l'application ?",

"file_download": "Fichier téléchargé",
"generic_error": "Oups ! Quelque chose s'est mal passé.",

"connect": "Connecter",
"open": "Ouvrir",
"cancel": "Annuler",
"url": "URL",
"back": "Retour",
Expand Down
57 changes: 29 additions & 28 deletions lib/pages/web_view.dart
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ class WebView extends ConsumerStatefulWidget {
}

class WebViewAppState extends ConsumerState<WebView> {

late AuthInAppBrowser authBrowser;
late Manifest manifest;
late URLRequest _initialRequest;
Expand Down Expand Up @@ -85,29 +86,29 @@ class WebViewAppState extends ConsumerState<WebView> {
_concludeAuth(request);
},
);
// ignore: deprecated_member_use
return WillPopScope(
onWillPop: () => exitApp(context, ref),
child: Scaffold(
backgroundColor: HexColor(manifest.themeColor),
body: SafeArea(

return Scaffold(
backgroundColor: HexColor(manifest.themeColor),
body: SafeArea(
bottom: false,
child: InAppWebView(
initialUrlRequest: _initialRequest,
initialSettings: _settings,
pullToRefreshController: _pullToRefreshController,
shouldOverrideUrlLoading: _shouldOverrideUrlLoading,
onWebViewCreated: _onWebViewCreated,
shouldInterceptFetchRequest: _shouldInterceptFetchRequest,
onCreateWindow: _onCreateWindow,
onLoadStop: _onLoadStop,
onLoadStart: _onLoadStart,
onProgressChanged: _onProgressChanged,
onReceivedError: _onReceivedError,
onDownloadStartRequest: _onDownloadStartRequest,
),
),
),
// ignore: deprecated_member_use
child: WillPopScope(
onWillPop: () => exitApp(context, ref),
child: InAppWebView(
initialUrlRequest: _initialRequest,
initialSettings: _settings,
pullToRefreshController: _pullToRefreshController,
shouldOverrideUrlLoading: _shouldOverrideUrlLoading,
onWebViewCreated: _onWebViewCreated,
shouldInterceptFetchRequest: _shouldInterceptFetchRequest,
onCreateWindow: _onCreateWindow,
onLoadStop: _onLoadStop,
onLoadStart: _onLoadStart,
onProgressChanged: _onProgressChanged,
onReceivedError: _onReceivedError,
onDownloadStartRequest: _onDownloadStartRequest,
),
)),
);
}

Expand Down Expand Up @@ -316,11 +317,11 @@ class WebViewAppState extends ConsumerState<WebView> {
downloadStartRequest: downloadStartRequest,
controller: controller,
onSuccess: (File file, String filename) {
ScaffoldMessenger.of(context).showSnackBar(
scaffoldMessengerStateKey.currentState?.showSnackBar(
SnackBar(
content: Text('File downloaded: $filename'),
content: Text('${AppLocalizations.of(context)!.file_download}: $filename'),
action: SnackBarAction(
label: 'Open',
label: AppLocalizations.of(context)!.open,
onPressed: () {
// Open the downloaded file
OpenFile.open(file.path);
Expand All @@ -330,9 +331,9 @@ class WebViewAppState extends ConsumerState<WebView> {
);
},
onError: (er) {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text('Something went wrong'),
scaffoldMessengerStateKey.currentState?.showSnackBar(
SnackBar(
content: Text(AppLocalizations.of(context)!.generic_error),
),
);
}).download();
Expand Down
3 changes: 2 additions & 1 deletion lib/util/router.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import 'dart:io';
import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:humhub/models/hum_hub.dart';
Expand All @@ -12,6 +12,7 @@ import 'package:humhub/pages/web_view.dart';
import 'package:humhub/util/providers.dart';

final GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>();
final GlobalKey<ScaffoldMessengerState> scaffoldMessengerStateKey = GlobalKey<ScaffoldMessengerState>();

NavigatorState? get navigator => navigatorKey.currentState;

Expand Down

0 comments on commit 73903f6

Please sign in to comment.