我正在尝试创建一个系统,在其中可以验证字符串以检查它是否为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
答案 0 :(得分:4)
unar
一些示例结果:
网址 | 结果 |
---|---|
100010_ |
真实 |
Uri.tryParse(mystring)?.hasAbsolutePath ?? false;
|
假 |
'https://stackoverflow.com/questions/52975739/dart-flutter-validating-a-string-for-url' |
假 |
asd |
假 |
asd:asd |
假 |
%EMPTY_STRING% |
假 |
google.nl |
假 |
https: |
假 |
https:// |
真实 |
答案 1 :(得分:2)
由于某种原因,validators
软件包需要使用Flutter测试库的最新版本,而不是将其留给应用程序使用。也许有充分的理由(即他们正在使用一项新功能)。
flutter引擎内部需要特定版本的flutter_test库(这就是为什么通常不建议指定它的版本的原因)。因此,要解决此问题,您必须通过运行flutter upgrade
来升级抖动。如果您已经是所使用频道的最新版本,则可能必须运行flutter channel dev
或flutter channel master
才能切换到更新频率更高的频道(实际上是分支)。>
我大多数情况下都是在dev
分支/渠道上运行,尽管偶尔会遇到问题,但发生的次数很少。我建议不要使用master分支。
答案 2 :(得分: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。
答案 3 :(得分:1)
要检查有效的URL字符串,您只需使用Uri.parse()
,如下所示。
bool _validURL = Uri.parse(_adVertData.webLink).isAbsolute;
只需检查_validURL
答案 4 :(得分:1)
对于RegExp,如果要在字符串中查找URL,则可以使用此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.com,http://google.com全部。
答案 5 :(得分:1)
我使用了下面的方法。根据您的 rec,所有有效的 URL 都需要有一个主机(例如 google.com)。如果 URL 没有主机,它将返回一个空字符串(不是未定义或 null)。
__init__.py
使用 .isAbsolute,正如一些人已经报告的那样,将诸如“http:”之类的 URL 标记为无效的 URL。