LucJosin / on_audio_query

Flutter Plugin used to query audios/songs infos [title, artist, album, etc..] from device storage.
https://pub.dev/packages/on_audio_query
42 stars 27 forks source link

App crashes in request permissions! #133

Open yasersojoodi opened 8 months ago

yasersojoodi commented 8 months ago

I/FA-Ads ( 8545): Application backgrounded at: timestamp_millis: 1698398144366 D/AndroidRuntime( 8545): Shutting down VM E/AndroidRuntime( 8545): FATAL EXCEPTION: main E/AndroidRuntime( 8545): Process: musicetapp.ir.musicet, PID: 8545 E/AndroidRuntime( 8545): java.lang.RuntimeException: Failure delivering result ResultInfo{who=@android:requestPermissions:, request=88560, result=-1, data=Intent { act=android.content.pm.action.REQUEST_PERMISSIONS (has extras) }} to activity {musicetapp.ir.musicet/musicetapp.ir.musicet.MainActivity}: com.lucasjosino.on_audio_query.PluginProvider$UninitializedPluginProviderException: Tried to get one of the methods but the 'PluginProvider' has not initialized

NikolaKuzmanovski commented 4 months ago

You should make sure that no rendered component executes audioQuery before getting users permission. Ex.

bool permissionGranted = false;

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

  void _requestPermission() async {
    PermissionStatus status = await Permission.audio.request();

    if (status.isPermanentlyDenied) {
      await Permission.audio.request();
    }
    if (status.isGranted) {
      _createPlaylist();
      setState(() {
        permissionGranted = true;
      });
    }
  }

When permissionGranted = true you can initialise the audioQuerys