我已經嘗試了所有方法來在我的應用程式上獲取歌曲檔案,但它仍然沒有顯示任何內容,這是我的代碼如下:'''
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),
);
},
),
);
} }
uj5u.com熱心網友回復:
呼叫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),
);
},
);
},
),
);
}
請記住,要獲取大部分用戶資訊,您需要請求權限
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/374703.html
