Flutter url_launcher не может открыть www. приставка - PullRequest
0 голосов
/ 17 апреля 2020

Я хочу знать, как открыть URL-адрес этого формата с помощью url_launcer во флаттере:

www.flutter.dev
flutter.dev

Поскольку в моем случае url_launcer может открывать только URL-формат в следующем формате:

https://www.flutter.dev
http://www.flutter.dev
https://flutter.dev
http://flutter.dev

И это моя ошибка, если я вызываю функцию URL, чтобы открыть www.flutter.dev или flutter.dev:

I/flutter (17563): Could not launch www.google.com/
I/flutter (17563): 
I/flutter (17563): #0      Navigation.launchURL (package:my_package/common/helpers/navigation.dart:39:7)
I/flutter (17563): <asynchronous suspension>
I/flutter (17563): #1      CardAttachments.build.<anonymous closure> (package:my_package/widget/cards/attachments/card_attachments.dart:55:34)
I/flutter (17563): #2      _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:706:14)
I/flutter (17563): #3      _InkResponseState.build.<anonymous closure> (package:flutter/src/material/ink_well.dart:789:36)
I/flutter (17563): #4      GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:182:24)
I/flutter (17563): #5      TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:486:11)
I/flutter (17563): #6      BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:264:5)
I/flutter (17563): #7      BaseTapGestureRecognizer.acceptGesture (package:flutter/src/gestures/tap.dart:236:7)
I/flutter (17563): #8      GestureArenaManager.sweep (package:flutter/src/gestures/arena.dart:156:27)
I/flutter (17563): #9      GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:222:20)
I/flutter (17563): #10     GestureBinding.dispatchEvent (package:fl

1 Ответ

1 голос
/ 17 апреля 2020

Вы должны проверить поддерживаемый URL схемы из этого пакета. Вам нужно ввести http: или https: в начале строки, чтобы указать, что это URL.

Вы должны использовать canLaunch для проверки URL перед его запуском:

if (await canLaunch(url)){
   await launch(url);
} else {
   throw 'Could not launch ${url}';
}

Вы можете добавить http ранее к переменной.

String newUrl = 'http://' + url;
if (await canLaunch(newUrl)){
   await launch(newUrl);
} else {
  throw 'Could not launch ${newUrl}';
}

Проверьте, содержит ли он http

if( !url.substring(0, 5).contains('http') ) {
   url = 'http://' + url;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...