Dart / Flutter - 验证URL的字符串

问题描述 投票:0回答:2

我正在尝试创建一个系统,我可以在其中验证字符串以检查它是否是网址。 (https://www.google.com/

我找到了颤振包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
string dart flutter url-validation
2个回答
2
投票

出于某种原因,validators软件包需要一个最新版本的flutter测试库,而不是将其留给应用程序。也许有一个很好的理由(即他们正在使用新功能)。

flutter引擎内部需要特定版本的flutter_test库(这就是为什么指定它的版本通常是个坏主意)。所以要解决这个问题,你必须通过运行flutter upgrade来升级你的颤振。如果您已经使用了最新版本的频道,则可能必须运行flutter channel devflutter channel master才能切换到更频繁更新的频道(真正的分支)。

我大部分时间都在dev分支/频道上运行,虽然它偶尔会出现问题,但它并没有发生太多。如果可能的话,我建议不要使用master分支。


1
投票
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。

© www.soinside.com 2019 - 2024. All rights reserved.