open static method
Future<void>
open({
- BuildContext? context,
- required String url,
- GpLinkOpenMode mode = GpLinkOpenMode.externalBrowser,
- String? title,
context solo hace falta para GpLinkOpenMode.internalScreen/
GpLinkOpenMode.internalModal (empujan una pantalla/modal sobre la
app) — y aun ahí es opcional: si no lo pasás, usa
GpNavigator.navigatorKey (ver nota en GpModal.showCustomModal).
GpLinkOpenMode.externalBrowser nunca lo necesita.
Implementation
static Future<void> open({
BuildContext? context,
required String url,
GpLinkOpenMode mode = GpLinkOpenMode.externalBrowser,
String? title,
}) async {
switch (mode) {
case GpLinkOpenMode.externalBrowser:
await launchUrl(Uri.parse(url), mode: LaunchMode.externalApplication);
case GpLinkOpenMode.internalScreen:
final resolvedContext = GpNavigator.resolve(context);
if (resolvedContext == null || !resolvedContext.mounted) return;
await Navigator.of(resolvedContext).push(
MaterialPageRoute<void>(
builder: (_) => GpWebViewScreen(url: url, title: title),
),
);
case GpLinkOpenMode.internalModal:
final resolvedContext = GpNavigator.resolve(context);
if (resolvedContext == null || !resolvedContext.mounted) return;
await GpWebViewModal.show(
context: resolvedContext,
url: url,
title: title,
);
}
}