Dart / Flutter - проверка строки для URL - PullRequest
0 голосов
/ 24 октября 2018

Я пытаюсь создать систему, в которой я могу проверить строку, чтобы проверить, является ли это URL или нет.(https://www.google.com/)

Я нашел пакет флаттера валидатор , но он не совместим с dart 2, поэтому не будет совместим с моим кодом.

с таким же именем,Я также нашел пакет validators , но я не могу заставить его работать правильно с моим кодом, так как он выдает следующую ошибку; (надеюсь, вам нравится имя моего проекта;)

Because every version of flutter_test from sdk depends on test 1.3.0 
and every version of validators depends on test ^1.3.3, flutter_test from sdk is incompatible with validators.
So, because gucci depends on both validators ^1.0.0+1 and flutter_test any from sdk, version solving failed.
Unable to reload your application because "flutter packages get" failed to update package dependencies.
Exception: pub get failed (1)

Если бы вы могли либо найти исправление для validators, чтобы оно не выдавало эту ошибку и, таким образом, корректно работало с моим кодом, либо предложить другой способ проверки строки на соответствие URL, который был бы полезен.

Спасибо

Редактировать - Мой pubspec.yaml файл

name: gucci
description: A new Flutter project.

dependencies:
  flutter:
    sdk: flutter

  cupertino_icons:
  barcode_scan:
  gradient_app_bar:
  url_launcher:
  validate: ^1.7.0

dev_dependencies:
  flutter_test:
    sdk: flutter

  fonts:
    - family: PlayfairDisplay
      fonts:
        - asset: fonts/PlayfairDisplay-BoldItalic.ttf

    - family: Kanit
      fonts:
        - asset: fonts/Kanit-ExtraBoldItalic.ttf

    - family: Poppins
      fonts:
        - asset: fonts/Poppins-BoldItalic.ttf

    - family: PoppinsLightItalic
      fonts:
        - asset: fonts/Poppins-LightItalic.ttf

    - family: PoppinsMediumItalic
      fonts:
        - asset: fonts/Poppins-MediumItalic.ttf

Ответы [ 2 ]

0 голосов
/ 14 апреля 2019
var urlPattern = r"(https?|http)://([-A-Z0-9.]+)(/[-A-Z0-9+&@#/%=~_|!:,.;]*)?(\?[A-Z0-9+&@#/%=~_|!:‌​,.;]*)?";
var match = new RegExp(urlPattern, caseSensitive: false).firstMatch('https://www.google.com');
match = RegExp(urlPattern, caseSensitive: false).firstMatch('http://www.google.com');

Вы также можете использовать RegExp.

0 голосов
/ 29 октября 2018

По какой-то причине пакет validators требует довольно недавней версии библиотеки тестирования flutter, а не оставляет ее на усмотрение приложения.Возможно, для этого есть веская причина (т. Е. Они используют новую функцию).

Механизму флаттера внутренне требуется определенная версия библиотеки flutter_test (поэтому указывать версиюЭто).Поэтому, чтобы это исправить, вам нужно обновить флаттер, запустив flutter upgrade.Если вы уже используете самую последнюю версию канала, на котором вы находитесь, возможно, вам придется запустить flutter channel dev или flutter channel master, чтобы переключиться на канал (действительно ветвь), который обновляется чаще.

Я работаю на ветке / канале dev по большей части, и, хотя у него очень редко возникают проблемы, это не случается часто.Я бы посоветовал не использовать основную ветку, если это возможно.

...