我正在尝试将每个data name
链接到特定的url
,而data
是filtered
。我尝试使用url
值来获取index
,但它会根据我的搜索不断变化。为了更好地理解,下面显示了一个示例数据示例和url
示例。我有几个主题,每个主题都有自己的数据名称和url
数据,我将需要一种方法来启动正确的url
onTap
。谢谢
数据示例(在wordsList
中声明的数据)
Fruits:
Apple,
Orange,
Banana,
Pear
Color:
Red,
Blue,
Green,
Purple
网址示例
https://example.com/fruits1.html
https://example.com/fruits2.html
https://example.com/fruits3.html
https://example.com/fruits4.html
https://example.com/colors1.html
https://example.com/colors2.html
https://example.com/colors3.html
https://example.com/colors4.html
代码
List<String> wordsList = [...];
List<String> filteredWordsList = [];
void _onSearch(value) {
setState(() {
filteredWordsList =
wordsList.where((item) => item.toLowerCase().contains('$value')).toList();
});
}
在这里我将数据声明到wordsList中,并且filteredWordsList将在搜索时从wordsList中拉出数据列表。
@override
Widget build(BuildContext context) {
...
child: ListView.builder(
itemCount: filteredWordsList.length,
itemBuilder: (context, index) {
return Card(
child: ListTile(
title: Text('${filteredWordsList[index]}'),
onTap: (){
_launch('https://example.com/xxx$index.html');
},
),
);
},
),
在这里,我需要调用正确的网址。
Future<void> _launch(String url) async{
if (await canLaunch(url)) {
await launch(url, forceSafariVC: true, forceWebView: true , enableJavaScript: true,);
} else {
throw 'Could not launch $url';
}
}
这是我的url_launcher