使用颤振音频查询后没有在我的应用程序中获取歌曲文件

Posted

技术标签:

【中文标题】使用颤振音频查询后没有在我的应用程序中获取歌曲文件【英文标题】:not getting song files in my app after using flutter audioQuery 【发布时间】:2022-01-11 16:50:19 【问题描述】:

我已经尝试了所有方法来在我的应用上获取歌曲文件,但它仍然没有显示任何内容,下面是我的代码:

       import 'package:flutter/cupertino.dart';

       import 'package:flutter/material.dart';

       import 'package:flutter_audio_query/flutter_audio_query.dart';

        class slist extends StatefulWidget 

  @override
  _slistState createState() => _slistState();


        class _slistState extends State<slist> 
        final FlutterAudioQuery audioQuery = FlutterAudioQuery();
         List<SongInfo> songs = [];

          @override
        void initState() 
    super.initState();
    getAllSongs();
  

          Future<void> getAllSongs() async 
    songs = await audioQuery.getSongs();
  

          @override
          Widget build(BuildContext context) 
            return Scaffold(
      backgroundColor: Colors.grey[900],
      body: ListView.builder(
        itemCount: songs.length,
        itemBuilder: (context, index) 
          return ListTile(
            leading: Image.asset(
              songs[index].albumArtwork != null
                  ? songs[index].albumArtwork
                  : "assets/placeholder.png",
            ),
            title: Text(songs[index].title),
            subtitle: Text(songs[index].artist),
          );
        ,
      ),
    );
  

【问题讨论】:

【参考方案1】:

initState 中调用getAllSongs() 将(如果可能)加载歌曲但不会更改小部件状态,您有两种选择:

1- 在getAllSongs() 之后添加setState

Future<void> getAllSongs() async 
  songs = await audioQuery.getSongs();
  setState(() );

2- 加载小部件树中的项目:

@override
Widget build(BuildContext context) 
  return Scaffold(
    backgroundColor: Colors.grey[900],
    body: FutureBuilder(
      future: getAllSongs(),
      builder: (context, item) 
        // Null data
        if (item.data == null) return const CircularProgressIndicator();

        // Empty list
        if (item.data!.isEmpty) return const Text("Nothing found!");

        // Load items
        songs = item.data!;
        return ListView.builder(
          itemCount: songs.length,
          itemBuilder: (context, index) 
            return ListTile(
              leading: Image.asset(
                songs[index].albumArtwork != null
                    ? songs[index].albumArtwork
                    : "assets/placeholder.png",
              ),
              title: Text(songs[index].title),
              subtitle: Text(songs[index].artist),
            );
          ,
        );
      ,
    ),
  );

记住,要获取大部分用户信息,您需要request the permission

【讨论】:

circumprogressindicator();,一直滚动但不带出歌曲列表

以上是关于使用颤振音频查询后没有在我的应用程序中获取歌曲文件的主要内容,如果未能解决你的问题,请参考以下文章

从歌曲中获取当前音频频率 - Java(也许使用 FFT?)

为啥 iPod 的音频在我的应用程序导致它淡出后没有淡入?

如何在我的颤振应用程序中从 bing web search apiv7 获取图像

Google Cast:从音频设备获取当前正在播放的歌曲

如何在 iOS 4 中在后台播放多个音频文件?

如何使用索引直接从 raw/res 文件夹访问音频文件