我想用firebase中的链接数据打开一堆音乐应用程序链接。我想打开,amazonPrimeMusic,Ganna,Spotify,Wynk,JioSavaan等等。
Widget buildResultCard(data) {
List items = [Text(data['Ganna']),
IconButton(icon:Icon(Icons.all_inclusive),
onPressed: ()=> {Text("Ganna")}
),
Text(data['Wynk']),
IconButton(icon:Icon(Icons.all_inclusive),
onPressed: ()=> {Text("Ganna")}
),
Text(data['JioSavaan']),
IconButton(icon:Icon(Icons.all_inclusive),
onPressed: ()=> {Text("Ganna")}
),
Text(data['PrimeMusic']),
IconButton(icon:Icon(Icons.all_inclusive),
onPressed: ()=> {Text("Ganna")}
)
];
return ListView.builder(
padding: EdgeInsets.only(top: 20),
itemCount: items.length,
itemBuilder: (BuildContext context, int index) {
return items[index];
},
);
}
当我点击列表中的按钮时,它应该打开链接所在的特定应用程序,例如对于AmazonPrimeMusic链接,它应该打开亚马逊音乐应用程序。
你可以使用flutter_appavailability包。此插件允许您检查是否在移动设备中安装了应用程序,并使用此插件可以启动应用程序。
如果已安装,则使用url_launcher启动WebView中的其他打开链接。
将此添加到依赖项下的pubspec.yaml文件中 -
device_apps:
android_intent:
url_launcher:
并将这些添加到顶部 -
import 'package:device_apps/device_apps.dart';
import 'package:url_launcher/url_launcher.dart';
import 'package:android_intent/android_intent.dart';
这是示例代码 -
_openJioSavaan (data) async
{String dt = data['JioSavaan'] as String;
bool isInstalled = await DeviceApps.isAppInstalled('com.jio.media.jiobeats');
if (isInstalled != false)
{
AndroidIntent intent = AndroidIntent(
action: 'action_view',
data: dt
);
await intent.launch();
}
else
{
String url = dt;
if (await canLaunch(url))
await launch(url);
else
throw 'Could not launch $url';
}
}