musicfy 0.0.1 copy "musicfy: ^0.0.1" to clipboard
musicfy: ^0.0.1 copied to clipboard

PlatformAndroid

A Flutter plugin for retrieving music metadata from the device.

example/lib/main.dart

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

void main() {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  final Musicfy _musicfy = Musicfy();
  final AudioPlayer _audioPlayer = AudioPlayer();
  List<dynamic> _musicList = [];
  String? _currentlyPlaying;

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

  @override
  void dispose() {
    // از بین بردن AudioPlayer برای جلوگیری از مصرف منابع
    _audioPlayer.dispose();
    super.dispose();
  }

  Future<void> fetchMusicList() async {
    // درخواست مجوز دسترسی به رسانه‌ها
    PermissionStatus status = await Permission.audio.request();

    if (status.isGranted) {
      try {
        // اگر مجوز داده شد، لیست موزیک‌ها را دریافت کنید
        final musicList = await _musicfy.getMusicList();
        setState(() {
          _musicList = musicList;
        });
      } catch (e) {
        print('Error fetching music list: $e');
      }
    } else if (status.isPermanentlyDenied) {
      // اگر مجوز به طور دائمی رد شده باشد، کاربر را به تنظیمات هدایت کنید
      print('Permission permanently denied. Redirecting to app settings...');
      openAppSettings();
    } else {
      // اگر مجوز رد شد
      print('Permission denied.');
    }
  }

  Future<void> playMusic(String path) async {
    try {
      await _audioPlayer.setFilePath(path); // تنظیم مسیر فایل برای پخش
      await _audioPlayer.play(); // پخش آهنگ
      setState(() {
        _currentlyPlaying = path;
      });
    } catch (e) {
      print('Error playing music: $e');
    }
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Musicfy Plugin Example'),
        ),
        body: _musicList.isEmpty
            ? Center(
                child: Text('No music found or permission denied.'),
              )
            : ListView.builder(
                itemCount: _musicList.length,
                itemBuilder: (context, index) {
                  final music = _musicList[index];
                  final isPlaying = _currentlyPlaying == music['path'];
                  return ListTile(
                    title: Text(music['title']),
                    subtitle: Text('${music['artist']} - ${music['album']}'),
                    trailing: IconButton(
                      icon: Icon(
                        isPlaying ? Icons.pause_circle : Icons.play_circle,
                        color: isPlaying ? Colors.green : Colors.blue,
                      ),
                      onPressed: () {
                        playMusic(music['path']);
                      },
                    ),
                  );
                },
              ),
      ),
    );
  }
}
2
likes
140
points
3
downloads

Publisher

unverified uploader

Weekly Downloads

A Flutter plugin for retrieving music metadata from the device.

Documentation

API reference

License

MIT (license)

Dependencies

flutter, plugin_platform_interface

More

Packages that depend on musicfy

Packages that implement musicfy