如果用户在文本字段中键入描述时输入了任何URL,并且我希望检测到该URL并显示该URL的预览。有人对如何实现这一目标有什么想法吗?
jk9hmnmh1#
您可以监听TextEditingController以在打印时检测它,在我的示例中,我将识别包含“http”文本的URL:在StatefulWidget中:
TextEditingController
StatefulWidget
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
TextField( controller: _controller, // assign that controller );
在热启动之后,当您键入TextField时,如果一些文本以“http”(即URL)开头,侦听器将打印它。你可以用它来实现你的目标。
biswetbf2#
您可以使用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, ..
2条答案
按热度按时间jk9hmnmh1#
您可以监听
TextEditingController
以在打印时检测它,在我的示例中,我将识别包含“http”文本的URL:在
StatefulWidget
中:TextField
小部件:在热启动之后,当您键入
TextField
时,如果一些文本以“http”(即URL)开头,侦听器将打印它。你可以用它来实现你的目标。
biswetbf2#
您可以使用anylink包: