Я создаю приложение MusicPlayer, поэтому мне нужно просмотреть список musicTiles, чтобы пользователь мог выбрать песню из внутреннего хранилища и воспроизвести ее. Поэтому я использовал File_Picker на панели приложений с помощью кнопки добавления, с помощью которой пользователь может забирать музыку из своего локального хранилища. Поэтому я использовал ключевые слова async и await в своей функции file_picking. и я сохраняю file_path и file_names в типе переменных List. После этого я использовал функцию _buidMusicTile () в моем виджете столбца, но она дает следующую ошибку:
= › тип" Future "не является подтипом типа" Widget "
Код:
class _MusicPageState extends State<MusicPage> {
FileType _pickingType = FileType.any;
TextEditingController _controller = TextEditingController();
List<String> listofAudioFilesPath;
List<String> listofAudioNames;
@override
void initState() {
super.initState();
_controller.addListener(() => _extension = _controller.text);
}
@override
Widget build(BuildContext context) {
Size size = MediaQuery.of(context).size;
//const Key centerKey = ValueKey('bottom-sliver-list');
return Scaffold(
backgroundColor: Colors.brown[300],
appBar: AppBar(
actions: [
Container(
width: size.width,
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
IconButton(
icon: Icon(Icons.sort),
onPressed: () {},
),
IconButton(
icon: Icon(Icons.add_circle),
onPressed: () async {
// _openFileExplorer();
FilePickerResult result = await FilePicker.platform
.pickFiles(allowMultiple: true);
if (result != null) {
listofAudioFilesPath = result.paths.toList();
listofAudioNames = result.names.toList();
print(listofAudioNames);
print(listofAudioFilesPath);
}
},
),
],
),
),
),
],
),
body: Column(
children: [
Text('Music Library'),
SizedBox(height: 10),
Stack(
children: [
_buildMusicTile(listofAudioFilesPath, listofAudioNames),
],
),
],
),
);
}
}
_buildMusicTile(
List<String> listofAudioFilesPath, List<String> listofAudioNames) async {
List<String> listOfPath = await listofAudioFilesPath;
List<String> listOfFiles = await listofAudioFilesPath;
if (listofAudioFilesPath != null && listofAudioNames != null) {
return ListView.separated(
itemCount: listofAudioNames.length,
separatorBuilder: (BuildContext context, int index) {
return Container(
height: 10,
color: Colors.white,
);
},
itemBuilder: (BuildContext context, int index) {
return ListTile(
leading: Icon(Icons.play_circle_filled),
title: Text(
'$listofAudioNames[$index]',
style: TextStyle(color: Colors.black, fontSize: 25),
),
);
},
);
} else {
return Center(
child: Column(
children: [
Text(
'$listofAudioNames',
style: TextStyle(color: Colors.black, fontSize: 25),
),
CircularProgressIndicator(),
],
),
);
}
}
FutureBuilder
- person Sajith   schedule 30.09.2020