颤振-我想检测是否有任何URL在TextField中输入,并希望显示的URL的预览,如果进入



如果用户在文本框中键入描述时输入了任何URL,并且我希望检测到该URL并希望显示该URL的预览。

有没有人对如何实现这一目标有什么想法?

您可以在打印时侦听TextEditingController以检测它,在我的示例中,我将识别包含"http"的URL。文本:

inStatefulWidget:

late TextEditingController _controller;
@override
void initState() {
_controller = TextEditingController();
_controller.addListener(() {
if (_controller.text.contains("http")) {
print("link detected :");
print(_controller.text.split(' ').firstWhere(
(element) => element.startsWith("http"),
));
}
});
super.initState();
}

TextField小部件:

TextField(
controller: _controller, // assign that controller
);

热重启后,当您在TextField中键入时,如果一些文本以"http"(这是URL),侦听器将打印它。

你可以用它来实现你的目标。

你可以使用anylink包:

on TextField(
onChange: (url){
bool isValidUrl = AnyLinkPreview.isValidLink(
url,
protocols: ['http', 'https'],
hostWhitelist: ['https://youtube.com/'],
hostBlacklist: ['https://facebook.com/'],
);
if(isValidUrl){
setState((){
_currentUrl = url;
})
}
}
) 

AnyLinkPreview(
...
link: _currentUrl,
..

相关内容

最新更新