не получаю файлы песен в моем приложении после использования 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),
);
},
);
},
),
);
}
Помните, чтобы получить большую часть информации о пользователе, вам нужно запросить разрешение