open_link_handler.dart
899 Bytes
import 'package:appframe/config/routes.dart';
import 'package:appframe/services/dispatcher.dart';
import 'package:url_launcher/url_launcher.dart';
class OpenLinkHandler extends MessageHandler {
@override
Future<dynamic> handleMessage(params) async {
if (params is! Map<String, dynamic>) {
throw Exception('参数错误');
}
final String url = params['url'] as String;
if (url.isEmpty) {
throw Exception('参数错误');
}
int screenType = params['screenType'] ?? 1;
final bool isBrowser = params['isBrowser'] as bool? ?? false;
if (isBrowser) {
final uri = Uri.parse(url);
if (await canLaunchUrl(uri)) {
await launchUrl(uri, mode: LaunchMode.externalApplication);
} else {
return false;
}
} else {
router.push('/link', extra: {'url': url, 'screenType': screenType});
}
return true;
}
}