Flutter 中已弃用“canLaunch”

M K*_*imi 9 url deprecated flutter url-launcher

我使用了url_launcher包。

String query = Uri.encodeComponent(Utils.getSelectedStoreAddress());
var appleUrl = 'maps:q=$query';
var googleUrl = 'https://www.google.com/maps/search/?api=1&query=$query';

_launch(appleUrl);
_launch(googleUrl);

Future<void> _launch(String url) async {
await canLaunch(url)
    ? await launch(url)
    : _showSnackBar('could_not_launch_this_app'.tr());
}
Run Code Online (Sandbox Code Playgroud)

一切都很好,直到我收到此警告:

info: 'canLaunch' is deprecated and shouldn't be used. Use canLaunchUrl instead. 
Run Code Online (Sandbox Code Playgroud)

M K*_*imi 15

我更改了代码,如下所示,一切正常:

String query = Uri.encodeComponent(Utils.getSelectedStoreAddress());
Uri appleUrl = Uri.parse('maps:q=$query');
Uri googleUrl = Uri.parse('https://www.google.com/maps/search/?api=1&query=$query');


_launch(appleUrl);
_launch(googleUrl);

 Future<void> _launch(Uri url) async {
   await canLaunchUrl(url)
    ? await launchUrl(url)
    : _showSnackBar('could_not_launch_this_app'.tr());
}
Run Code Online (Sandbox Code Playgroud)

  • 也可以使用 `launchUrlString(url)` 但在文档中建议使用 `launchUrl(...)` 因为在 `launchUrl(...)` 的情况下,插件会努力使 URL 有效(如所解释的)在文档中)。 (7认同)