Files
Hacki/lib/utils/link_util.dart
Jiaqi Feng 4e8cf9837f v0.2.13 (#34)
* fixed #32 and #33

* fall back to default browser #31

* fixed story tile.

* fixed version.

* use Listview.builder instead of listview.

* updated link utls.
2022-06-03 00:26:30 -07:00

41 lines
1.2 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter_inappwebview/flutter_inappwebview.dart';
import 'package:url_launcher/url_launcher.dart';
abstract class LinkUtil {
static final ChromeSafariBrowser _browser = ChromeSafariBrowser();
static void launch(String link, {bool useReader = false}) {
Uri rinseLink(String link) {
final RegExp regex = RegExp(r'\)|].*$');
if (!link.contains('en.wikipedia.org') && link.contains(regex)) {
final String match = regex.stringMatch(link) ?? '';
return Uri.parse(link.replaceAll(match, ''));
}
return Uri.parse(link);
}
final Uri uri = rinseLink(link);
canLaunchUrl(uri).then((bool val) {
if (val) {
if (link.contains('http')) {
_browser
.open(
url: uri,
options: ChromeSafariBrowserClassOptions(
ios: IOSSafariOptions(
entersReaderIfAvailable: useReader,
preferredControlTintColor: Colors.orange,
),
),
)
.onError((_, __) => launchUrl(uri));
} else {
launchUrl(uri);
}
}
});
}
}