class _HomeState extends State<Home> {
@override
void initState() {
super.initState();
checkPermission();
}
final audioQuery = OnAudioQuery();
FutureBuilder<List<SongModel>>(
future: audioQuery.querySongs(
sortType: null,
orderType: OrderType.ASC_OR_SMALLER,
uriType: UriType.EXTERNAL,
ignoreCase: true,
),
Future<void> checkPermission() async {
if (!kIsWeb) {
bool permissionRequest = await audioQuery.permissionsRequest();
setState(() {});
}
}
我试图使用音频查询以下教程在youtube上,但我有错误,audioQuery.querySongs()是execute之前,用户给一个权限.
然后try 添加权限判断,如下所示:
Future<void> checkPermission() async {
if (!kIsWeb) {
bool permissionStatus = await audioQuery.permissionsStatus();
if (!permissionStatus) {
await audioQuery.permissionsRequest();
}
setState(() {});
}
}
但这并不管用.我的DEBUGE CONSOLE说:
**W/le.music_playe(29628): Accessing hidden method Landroid/content/ContextWrapper;->getDisplay()Landroid/view/Display; (light greylist, linking)
W/OnAudioQueryPlugin(29628): The application doesn't have access to the library
E/AndroidRuntime(29628): FATAL EXCEPTION: main**
第一个警告意味着显示弹出窗口以访问存储,但在popup show次警告后,我的应用程序崩溃.我认为这是因为audioQuery.querySongs()在用户许可之前就执行了.
那么如何使该函数等待直到checkPermission()完成.我正在try 使用Future.wait(),但我不明白这样做.请帮助我解决这个问题,谢谢.