clipboard url handling

This commit is contained in:
Fabian Freund
2025-05-29 14:21:35 +02:00
parent 05d938309c
commit 6985e5f2d5
6 changed files with 113 additions and 35 deletions
+7
View File
@@ -0,0 +1,7 @@
import 'package:flutter/services.dart';
import 'package:weblibre/utils/uri_parser.dart';
Future<Uri?> tryGetUriFromClipboard({bool eagerParsing = true}) async {
final data = await Clipboard.getData('text/plain');
return tryParseUrl(data?.text, eagerParsing: eagerParsing);
}
+31 -9
View File
@@ -1,6 +1,7 @@
import 'package:flutter/material.dart';
import 'package:nullability/nullability.dart';
import 'package:url_launcher/url_launcher.dart';
import 'package:weblibre/utils/clipboard.dart';
void showErrorMessage(BuildContext context, String message) {
final snackBar = SnackBar(
@@ -52,18 +53,39 @@ void showTabOpenedMessage(
ScaffoldMessenger.of(context).showSnackBar(snackBar);
}
void showSuggestNewTabMessage(
Future<void> showSuggestNewTabMessage(
BuildContext context, {
required void Function() onAdd,
required void Function(String? searchText) onAdd,
Duration duration = const Duration(seconds: 2),
}) {
final snackBar = SnackBar(
content: const Text('Want to open a new tab?'),
action: SnackBarAction(label: 'New Tab', onPressed: onAdd),
duration: duration,
);
}) async {
final clipboardUrl = await tryGetUriFromClipboard();
ScaffoldMessenger.of(context).showSnackBar(snackBar);
final snackBar =
(clipboardUrl != null)
? SnackBar(
content: const Text('Want to open link from clipboard?'),
action: SnackBarAction(
label: 'Open',
onPressed: () {
onAdd(clipboardUrl.toString());
},
),
duration: duration,
)
: SnackBar(
content: const Text('Want to open a new tab?'),
action: SnackBarAction(
label: 'New Tab',
onPressed: () {
onAdd(null);
},
),
duration: duration,
);
if (context.mounted) {
ScaffoldMessenger.of(context).showSnackBar(snackBar);
}
}
void showTabSwitchMessage(