As written on the title, the app crashes when the method get called. I'm using GetX state management and calling this method every time the activeArtIdx has changed.
playlist_controller.dart
class PlaylistController extends GetxController {
static PlaylistController get to => Get.find();
final _query = FlutterAudioQuery();
final artists = <ArtistInfo>[].obs;
final activeArtIdx = 0.obs;
final albums = <AlbumInfo>[].obs;
final activeAlbIdx = 0.obs;
@override
void onInit() {
_fetchArtists();
ever(activeArtIdx, _fetchAlbums); // call _fetchAlbums every time activeArtIdx is changed.
super.onInit();
}
Future<void> _fetchArtists() async {
final ars = await _query.getArtists(sortType: ArtistSortType.DEFAULT);
final invalidChars = RegExp(r'.*[\\\\/:\"*<>;|].*$');
final filtered = ars.where((ar) => !ar.name.contains(invalidChars));
artists.assignAll(filtered);
}
// this crashes the app.
Future<void> _fetchAlbums(int artIndex) async {
final a = await _query.getAlbumsFromArtist(artist: artists[artIndex].name);
a.forEach((alb) => print(alb));
}
}
Stacktrace
E/AndroidRuntime( 4438): FATAL EXCEPTION: AsyncTask #1
E/AndroidRuntime( 4438): Process: com.example.mazeplayer, PID: 4438
E/AndroidRuntime( 4438): java.lang.RuntimeException: An error occurred while executing doInBackground()
E/AndroidRuntime( 4438): at android.os.AsyncTask$4.done(Unknown Source:27)
E/AndroidRuntime( 4438): at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:383)
E/AndroidRuntime( 4438): at java.util.concurrent.FutureTask.setException(FutureTask.java:252)
E/AndroidRuntime( 4438): at java.util.concurrent.FutureTask.run(FutureTask.java:271)
E/AndroidRuntime( 4438): at android.os.AsyncTask$SerialExecutor$1.run(Unknown Source:2)
E/AndroidRuntime( 4438): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
E/AndroidRuntime( 4438): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
E/AndroidRuntime( 4438): at java.lang.Thread.run(Thread.java:919)
E/AndroidRuntime( 4438): Caused by: android.database.sqlite.SQLiteException: near "GROUP": syntax error (code 1 SQLITE_ERROR): , while compiling: SELECT album_id, album, is_music FROM audio WHERE ((is_pending=0) AND (is_trashed=0) AND (volume_name IN ( 'external_primary' ))) AND ((artist=? and is_music=?) GROUP BY (album)) ORDER BY title_key
E/AndroidRuntime( 4438): at android.database.DatabaseUtils.readExceptionFromParcel(Unknown Source:15)
E/AndroidRuntime( 4438): at android.database.DatabaseUtils.readExceptionFromParcel(Unknown Source:11)
E/AndroidRuntime( 4438): at android.content.ContentProviderProxy.query(Unknown Source:77)
E/AndroidRuntime( 4438): at android.content.ContentResolver.query(Unknown Source:77)
E/AndroidRuntime( 4438): at android.content.ContentResolver.query(Unknown Source:4)
E/AndroidRuntime( 4438): at android.content.ContentResolver.query(Unknown Source:12)
E/AndroidRuntime( 4438): at boaventura.com.devel.br.flutteraudioquery.loaders.AlbumLoader$AlbumLoadTask.loadAlbumsInfoWithMediaSupport(AlbumLoader.java:380)
E/AndroidRuntime( 4438): at boaventura.com.devel.br.flutteraudioquery.loaders.AlbumLoader$AlbumLoadTask.loadData(AlbumLoader.java:299)
E/AndroidRuntime( 4438): at boaventura.com.devel.br.flutteraudioquery.loaders.AlbumLoader$AlbumLoadTask.loadData(AlbumLoader.java:227)
E/AndroidRuntime( 4438): at boaventura.com.devel.br.flutteraudioquery.loaders.tasks.AbstractLoadTask.doInBackground(AbstractLoadTask.java:45)
E/AndroidRuntime( 4438): at boaventura.com.devel.br.flutteraudioquery.loaders.tasks.AbstractLoadTask.doInBackground(AbstractLoadTask.java:12)
E/AndroidRuntime( 4438): at android.os.AsyncTask$3.call(Unknown Source:20)
E/AndroidRuntime( 4438): at java.util.concurrent.FutureTask.run(FutureTask.java:266)
E/AndroidRuntime( 4438): ... 4 more
W/ActivityThread( 4438): SCHED: com.example.mazeplayer/.MainActivity [87, r=1593ms, a=228ms, w=23901ms]
I/Process ( 4438): Sending signal. PID: 4438 SIG: 9
Lost connection to device.
Exited (sigterm)
Health check
Device: Xiaomi Redmi Note 7 [lavender]
OS: Android 10
Dev.Machine: Microsoft Windows [Version 10.0.19042.804]
Doctor summary (to see all details, run flutter doctor -v):
[√] Flutter (Channel stable, 1.22.6, on Microsoft Windows [Version 10.0.19042.804], locale en-ID)
[√] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
[!] Android Studio (version 4.1.0)
X Flutter plugin not installed; this adds Flutter specific functionality.
X Dart plugin not installed; this adds Dart specific functionality.
[√] VS Code, 64-bit edition (version 1.53.2)
[√] Connected device (1 available)
! Doctor found issues in 1 category.
As written on the title, the app crashes when the method get called. I'm using GetX state management and calling this method every time the
activeArtIdx
has changed.playlist_controller.dart
Stacktrace
Health check