open method

  1. @override
Future<Map<String, dynamic>> open({
  1. required String url,
  2. String? title,
  3. bool? animated,
  4. bool? modal,
  5. bool? inExternal,
})
override

Implementation

@override
Future<Map<String, dynamic>> open(
    {required String url,
    String? title,
    bool? animated,
    bool? modal,
    bool? inExternal}) async {
  final context = AppbridgenewPlatform.instance.navigatorKey.currentContext;
  if (context == null) {
    return {
      'code': -1,
      'data': false,
      'msg': 'BuildContext is null, could not navigate.'
    };
  }

  if (inExternal == true) {
    if (await canLaunchUrl(Uri.parse(url))) {
      await launchUrl(Uri.parse(url), mode: LaunchMode.externalApplication);
      return {'code': 0, 'data': true, 'msg': 'Opened URL externally'};
    } else {
      return {
        'code': -1,
        'data': false,
        'msg': 'Could not launch $url externally.'
      };
    }
  }

  Navigator.of(context).push(
    MaterialPageRoute(
      builder: (context) {
        return Scaffold(
          appBar: AppBar(
            title: Text(title ?? 'Page'),
          ),
          body: Center(
            child: Text(
                'Opened internal URL: $url (Modal: $modal, Animated: ${animated ?? true})'),
          ),
        );
      },
      fullscreenDialog: modal ?? false,
    ),
  );

  return {'code': 0, 'data': true, 'msg': 'Opened internal URL'};
}