не получаю файлы песен в моем приложении после использования flutter audioQuery

Я пробовал все, чтобы получить файлы песен в своем приложении, но оно по-прежнему ничего не показывает, вот мой код ниже:'''

         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(если возможно) загрузит песни, но не изменит состояние виджета, у вас есть два варианта:

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

Помните, чтобы получить большую часть информации о пользователе, вам нужно запросить разрешение

Другие вопросы по тегам