Added more features webview
This commit is contained in:
@@ -4,9 +4,9 @@
|
||||
/// To regenerate, run: `dart run slang`
|
||||
///
|
||||
/// Locales: 2
|
||||
/// Strings: 58 (29 per locale)
|
||||
/// Strings: 68 (34 per locale)
|
||||
///
|
||||
/// Built on 2024-02-22 at 21:08 UTC
|
||||
/// Built on 2024-02-22 at 21:21 UTC
|
||||
|
||||
// coverage:ignore-file
|
||||
// ignore_for_file: type=lint
|
||||
@@ -226,6 +226,11 @@ class _StringsWebviewEn {
|
||||
// Translations
|
||||
String get goBack => 'Go back';
|
||||
String get goForward => 'Go forward';
|
||||
String get reload => 'Reload';
|
||||
String get openInSystemBrowser => 'Open in system browser';
|
||||
String get copyLinkClipboard => 'Copy link to clipboard';
|
||||
String get linkCopiedClipboard => 'Link copied to the clipboard.';
|
||||
String get share => 'Share';
|
||||
}
|
||||
|
||||
// Path: links.dates
|
||||
@@ -341,6 +346,11 @@ class _StringsWebviewEs implements _StringsWebviewEn {
|
||||
// Translations
|
||||
@override String get goBack => 'Ir atrás';
|
||||
@override String get goForward => 'Ir adelante';
|
||||
@override String get reload => 'Recargar';
|
||||
@override String get openInSystemBrowser => 'Abrir en el navegador del sistema';
|
||||
@override String get copyLinkClipboard => 'Copiar enlace al portapapeles';
|
||||
@override String get linkCopiedClipboard => 'Enlace copiado al portapapeles.';
|
||||
@override String get share => 'Compartir';
|
||||
}
|
||||
|
||||
// Path: links.dates
|
||||
@@ -389,6 +399,11 @@ extension on Translations {
|
||||
case 'settings.disconnectFromServer': return 'Disconnect from server';
|
||||
case 'webview.goBack': return 'Go back';
|
||||
case 'webview.goForward': return 'Go forward';
|
||||
case 'webview.reload': return 'Reload';
|
||||
case 'webview.openInSystemBrowser': return 'Open in system browser';
|
||||
case 'webview.copyLinkClipboard': return 'Copy link to clipboard';
|
||||
case 'webview.linkCopiedClipboard': return 'Link copied to the clipboard.';
|
||||
case 'webview.share': return 'Share';
|
||||
default: return null;
|
||||
}
|
||||
}
|
||||
@@ -426,6 +441,11 @@ extension on _StringsEs {
|
||||
case 'settings.disconnectFromServer': return 'Desconectar del servidor';
|
||||
case 'webview.goBack': return 'Ir atrás';
|
||||
case 'webview.goForward': return 'Ir adelante';
|
||||
case 'webview.reload': return 'Recargar';
|
||||
case 'webview.openInSystemBrowser': return 'Abrir en el navegador del sistema';
|
||||
case 'webview.copyLinkClipboard': return 'Copiar enlace al portapapeles';
|
||||
case 'webview.linkCopiedClipboard': return 'Enlace copiado al portapapeles.';
|
||||
case 'webview.share': return 'Compartir';
|
||||
default: return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,6 +38,11 @@
|
||||
},
|
||||
"webview": {
|
||||
"goBack": "Go back",
|
||||
"goForward": "Go forward"
|
||||
"goForward": "Go forward",
|
||||
"reload": "Reload",
|
||||
"openInSystemBrowser": "Open in system browser",
|
||||
"copyLinkClipboard": "Copy link to clipboard",
|
||||
"linkCopiedClipboard": "Link copied to the clipboard.",
|
||||
"share": "Share"
|
||||
}
|
||||
}
|
||||
@@ -38,6 +38,11 @@
|
||||
},
|
||||
"webview": {
|
||||
"goBack": "Ir atrás",
|
||||
"goForward": "Ir adelante"
|
||||
"goForward": "Ir adelante",
|
||||
"reload": "Recargar",
|
||||
"openInSystemBrowser": "Abrir en el navegador del sistema",
|
||||
"copyLinkClipboard": "Copiar enlace al portapapeles",
|
||||
"linkCopiedClipboard": "Enlace copiado al portapapeles.",
|
||||
"share": "Compartir"
|
||||
}
|
||||
}
|
||||
@@ -1,11 +1,14 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_inappwebview/flutter_inappwebview.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:share_plus/share_plus.dart';
|
||||
|
||||
import 'package:linkdy/screens/webview/provider/webview.provider.dart';
|
||||
|
||||
import 'package:linkdy/models/data/bookmarks.dart';
|
||||
import 'package:linkdy/i18n/strings.g.dart';
|
||||
import 'package:linkdy/utils/copy_clipboard.dart';
|
||||
import 'package:linkdy/utils/open_url.dart';
|
||||
|
||||
class WebView extends ConsumerWidget {
|
||||
final Bookmark bookmark;
|
||||
@@ -81,21 +84,69 @@ class WebView extends ConsumerWidget {
|
||||
Padding(
|
||||
padding: const EdgeInsets.all(8.0),
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
IconButton(
|
||||
onPressed: ref.watch(webViewProvider).canGoBack == true
|
||||
? () => ref.watch(webViewProvider).inAppWebViewController?.goBack()
|
||||
: null,
|
||||
icon: const Icon(Icons.arrow_back_rounded),
|
||||
tooltip: t.webview.goForward,
|
||||
Row(
|
||||
children: [
|
||||
IconButton(
|
||||
onPressed: ref.watch(webViewProvider).canGoBack == true
|
||||
? () => ref.watch(webViewProvider).inAppWebViewController?.goBack()
|
||||
: null,
|
||||
icon: const Icon(Icons.arrow_back_rounded),
|
||||
tooltip: t.webview.goForward,
|
||||
),
|
||||
const SizedBox(width: 8),
|
||||
IconButton(
|
||||
onPressed: ref.watch(webViewProvider).canGoForward == true
|
||||
? () => ref.watch(webViewProvider).inAppWebViewController?.goForward()
|
||||
: null,
|
||||
icon: const Icon(Icons.arrow_forward_rounded),
|
||||
tooltip: t.webview.goForward,
|
||||
),
|
||||
const SizedBox(width: 16),
|
||||
IconButton(
|
||||
onPressed: () => ref.watch(webViewProvider).inAppWebViewController?.reload(),
|
||||
icon: const Icon(Icons.refresh_rounded),
|
||||
tooltip: t.webview.reload,
|
||||
),
|
||||
],
|
||||
),
|
||||
const SizedBox(width: 8),
|
||||
IconButton(
|
||||
onPressed: ref.watch(webViewProvider).canGoForward == true
|
||||
? () => ref.watch(webViewProvider).inAppWebViewController?.goForward()
|
||||
: null,
|
||||
icon: const Icon(Icons.arrow_forward_rounded),
|
||||
tooltip: t.webview.goForward,
|
||||
PopupMenuButton(
|
||||
itemBuilder: (context) => [
|
||||
PopupMenuItem(
|
||||
onTap: () => Share.shareUri(Uri.parse(bookmark.url!)),
|
||||
child: Row(
|
||||
children: [
|
||||
const Icon(Icons.share_rounded),
|
||||
const SizedBox(width: 8),
|
||||
Text(t.webview.share),
|
||||
],
|
||||
),
|
||||
),
|
||||
PopupMenuItem(
|
||||
onTap: () => copyToClipboard(
|
||||
value: bookmark.url!,
|
||||
successMessage: t.webview.linkCopiedClipboard,
|
||||
),
|
||||
child: Row(
|
||||
children: [
|
||||
const Icon(Icons.copy_rounded),
|
||||
const SizedBox(width: 8),
|
||||
Text(t.webview.copyLinkClipboard),
|
||||
],
|
||||
),
|
||||
),
|
||||
PopupMenuItem(
|
||||
onTap: () => openUrl(bookmark.url!),
|
||||
child: Row(
|
||||
children: [
|
||||
const Icon(Icons.open_in_browser_rounded),
|
||||
const SizedBox(width: 8),
|
||||
Text(t.webview.openInSystemBrowser),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
|
||||
23
lib/utils/copy_clipboard.dart
Normal file
23
lib/utils/copy_clipboard.dart
Normal file
@@ -0,0 +1,23 @@
|
||||
// ignore_for_file: use_build_context_synchronously
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
|
||||
import 'package:linkdy/constants/global_keys.dart';
|
||||
|
||||
void copyToClipboard({
|
||||
required String value,
|
||||
required String successMessage,
|
||||
}) async {
|
||||
if (scaffoldMessengerGlobalKey.currentState != null) {
|
||||
await Clipboard.setData(
|
||||
ClipboardData(text: value),
|
||||
);
|
||||
scaffoldMessengerGlobalKey.currentState!.showSnackBar(
|
||||
SnackBar(
|
||||
content: Text(successMessage),
|
||||
backgroundColor: Colors.green,
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user