fix(android): android 13 local tracks not showing up

This commit is contained in:
Kingkor Roy Tirtho 2023-08-08 10:39:15 +06:00
parent e7c6813ccb
commit e3f4344ae9
4 changed files with 22 additions and 5 deletions

View File

@ -5,6 +5,7 @@
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO"/>
<queries> <queries>
<!-- If your app opens https URLs --> <!-- If your app opens https URLs -->

View File

@ -1,6 +1,7 @@
import 'dart:io'; import 'dart:io';
import 'package:catcher/catcher.dart'; import 'package:catcher/catcher.dart';
import 'package:device_info_plus/device_info_plus.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:flutter_hooks/flutter_hooks.dart';
@ -169,11 +170,25 @@ class UserLocalTracks extends HookConsumerWidget {
useAsyncEffect( useAsyncEffect(
() async { () async {
if (!kIsMobile) return; if (!kIsMobile) return;
if (!await Permission.storage.isGranted &&
!await Permission.storage.isLimited) { final androidInfo = await DeviceInfoPlugin().androidInfo;
final hasNoStoragePerm = androidInfo.version.sdkInt < 33 &&
!await Permission.storage.isGranted &&
!await Permission.storage.isLimited;
final hasNoAudioPerm = androidInfo.version.sdkInt >= 33 &&
!await Permission.audio.isGranted &&
!await Permission.audio.isLimited;
if (hasNoStoragePerm) {
await Permission.storage.request(); await Permission.storage.request();
if (isMounted()) ref.refresh(localTracksProvider); if (isMounted()) ref.refresh(localTracksProvider);
} }
if (hasNoAudioPerm) {
await Permission.audio.request();
if (isMounted()) ref.refresh(localTracksProvider);
}
}, },
null, null,
[], [],

View File

@ -419,13 +419,13 @@ packages:
source: hosted source: hosted
version: "1.1.0" version: "1.1.0"
device_info_plus: device_info_plus:
dependency: transitive dependency: "direct main"
description: description:
name: device_info_plus name: device_info_plus
sha256: "9b1a0c32b2a503f8fe9f8764fac7b5fcd4f6bd35d8f49de5350bccf9e2a33b8a" sha256: "86add5ef97215562d2e090535b0a16f197902b10c369c558a100e74ea06e8659"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "9.0.0" version: "9.0.3"
device_info_plus_platform_interface: device_info_plus_platform_interface:
dependency: transitive dependency: transitive
description: description:

View File

@ -102,6 +102,7 @@ dependencies:
google_fonts: ^4.0.4 google_fonts: ^4.0.4
supabase: ^1.9.9 supabase: ^1.9.9
dio: ^5.3.2 dio: ^5.3.2
device_info_plus: ^9.0.3
dev_dependencies: dev_dependencies:
build_runner: ^2.3.2 build_runner: ^2.3.2