web-dev-qa-db-ja.com

Dart / Flutter-URLの文字列を検証する

文字列を検証してURLかどうかを確認できるシステムを作成しようとしています。 ( https://www.google.com/

Flutterパッケージ validator を見つけましたが、これは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
6
Jake

RegExpの場合、文字列でURLを検索する場合は、これを使用できます。

r'^((?:.|\n)*?)((http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/)?[a-z0-9]+([\-\.]{1}[a-z0-9]+)([-A-Z0-9.]+)(/[-A-Z0-9+&@#/%=~_|!:,.;]*)?(\?[A-Z0-9+&@#/%=~_|!:‌​,.;]*)?)'

文字列内のURLを強調表示するときに使用できます。たとえば、チャットアプリでは、送信されたチャットメッセージのURLを強調表示できます。これにより、google.com、 https://google.comhttp://google.com すべてが検証されます。

1
Ares