аудио плеер не работает

Если прописать путь к аудио файлу вручную, плеер работает.

_path = '/storage/emulated/0/Music/p.mp3';

Если создать путь к аудио файлу с помощью метода, то не работает.
Создание метода

void _funPath(int i, String add) async {
  _ara = await getExternalStorageDirectories();
  switch(i) {
   case 0:
    setState(() {
     //Phone-> /storage/emulated/0
     _path = _ara[0].parent.parent.parent.parent.path + add;
    });
    break;
   case 1:
    setState(() {
     //Card-> /storage/extSdCard
     _path = _ara[1].parent.parent.parent.parent.path + add;
    });
    break;
   case 2:
    setState(() {
     //Phone-> /storage/emulated/0/Android/data/ru.site.f1/files
     _path = _ara[0].path + add;
    });
    break;
   case 3:
    setState(() {
     //Card-> /storage/extSdCard/Android/data/ru.site.f1/files
     _path = _ara[1].path + add;
    });
    break;
  }
 }

Реализация метода

_funPath(0, '/Music/p.mp3');

Причем, с помощью метода путь создается правильно, для проверки, я его вывожу вверху экрана, на скриншоте это видно. Ошибка в функции. Подскажите где. Далее, полный код и скриншот.

main.dart

import 'dart:io';

import 'package:flutter/material.dart';
import 'package:just_audio/just_audio.dart';

import 'package:path_provider/path_provider.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
 @override
 Widget build(BuildContext context) {
  return MaterialApp(
   debugShowCheckedModeBanner: false,
   title: 'Name App',
   theme: ThemeData(
    primarySwatch: Colors.blue,
   ),
   home: Scaffold(
    appBar: AppBar(
     title: Text('Name Page'),
    ),
    body: MyHomePage(),
   ),
  );
 }
}

class MyHomePage extends StatefulWidget {
 @override
 _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {

 String _path = '';
 AudioPlayer _player;
 List _ara = <Directory>[];

 @override
 void initState() {
  super.initState();

  //Phone
  //_path = '/storage/emulated/0/Music/p.mp3';
  //_funPath(0, '/Music/p.mp3');

  //Card
  //_path = '/storage/extSdCard/MyMusic/b.mp3'
  //_funPath(1, _path, '/MyMusic/b.mp3');

  //Phone
  // /storage/emulated/0/Android/data/ru.site.f1/files
  //_funPath(2, _path, '/disco.mp3');

  //Card
  // /storage/extSdCard/Android/data/ru.site.f1/files
  //_funPath(2, _path, '/disco.mp3');


  //ЕСЛИ ПРОПИСАТЬ ПУТЬ В РУЧНУЮ, РАБОТАЕТ
  //_path = '/storage/emulated/0/Music/p.mp3';

  //ЕСЛИ С ПОМОЩЬЮ МЕТОДА, ТО НЕ РАБОТАТЕ, НО ПУТЬ ВЫВОДИТСЯ
  _funPath(0, '/Music/p.mp3');

  _player = AudioPlayer();
  _funSourceAudio();

 }

 @override
 void dispose() {
  super.dispose();
  _player.dispose();

 }

 void _f1() {
  setState(() {

  });
 }

 void _funPath(int i, String add) async {
  _ara = await getExternalStorageDirectories();
  switch(i) {
   case 0:
    setState(() {
     //Phone-> /storage/emulated/0
     _path = _ara[0].parent.parent.parent.parent.path + add;
    });
    break;
   case 1:
    setState(() {
     //Card-> /storage/extSdCard
     _path = _ara[1].parent.parent.parent.parent.path + add;
    });
    break;
   case 2:
    setState(() {
     //Phone-> /storage/emulated/0/Android/data/ru.site.f1/files
     _path = _ara[0].path + add;
    });
    break;
   case 3:
    setState(() {
     //Card-> /storage/extSdCard/Android/data/ru.site.f1/files
     _path = _ara[1].path + add;
    });
    break;
  }
 }

 void _funSourceAudio() async {
  await _player.setFilePath(_path);
 }

 void _funPlay() {
  _player.play();
  setState(() {});
 }

 void _funPause() {
  _player.pause();
  setState(() {});
 }

 void _funStop() {
  _player.stop();
  setState(() {});
 }

 @override
 Widget build(BuildContext context) {
  return Stack(
   children: [
    Align(
     alignment: Alignment.topLeft,
     child: Text(
      _path, //ДЛЯ ПРОВЕРКИ
      style: TextStyle(
       fontSize: 20.0,
      ),
     ),
    ),
    Align(
     alignment: Alignment.center,
     child: Row(
      mainAxisSize: MainAxisSize.max,
      mainAxisAlignment: MainAxisAlignment.spaceEvenly,
      children: [
       InkWell(
        onTap: () { _funPlay(); },
        child: Icon(
         Icons.play_arrow_rounded,
         color: (_player.playing == false) ?  Colors.pink : Colors.indigo,
         size: 64.0
        ),
       ),
       InkWell(
        onTap: () { _funPause(); },
        child: Icon(
         Icons.pause_rounded,
         color: (_player.playing) ?  Colors.pink : Colors.indigo,
         size: 64.0
        ),
       ),
       InkWell(
        onTap: () { _funStop(); },
        child: Icon(
         Icons.stop_rounded,
         color: (_player.playing) ?  Colors.pink : Colors.indigo,
         size: 64.0
        ),
       ),
      ],
     ),
    ),
   ],
  );
 }

}

введите сюда описание изображения


Ответы (0 шт):