-1

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

       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),
          );
        },
      ),
    );
  }
}
4

1 回答 1

0

getAllSongs()在遗嘱内部调用initState(如果可能)加载歌曲但不更改小部件状态,您有两个选择:

1-在setState之后添加getAllSongs()

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),
            );
          },
        );
      },
    ),
  );
}

请记住,要获取大部分用户信息,您需要请求权限

于 2021-12-06T13:44:25.570 回答