import 'package:file_picker/file_picker.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_mobx/flutter_mobx.dart'; import 'package:provider/provider.dart'; import '../state/music_data_store.dart'; class SettingsPage extends StatelessWidget { const SettingsPage({Key key}) : super(key: key); @override Widget build(BuildContext context) { final MusicDataStore store = Provider.of(context); return ListView( children: [ Container( height: 12.0, ), const Padding( padding: EdgeInsets.symmetric( horizontal: 16.0, vertical: 4.0, ), child: Text( 'Library', style: TextStyle( fontWeight: FontWeight.bold, fontSize: 18.0, ), ), ), ListTile( title: const Text('Update library'), subtitle: Observer(builder: (_) { final bool isFetchingArtists = store.isFetchingArtists; final bool isFetchingAlbums = store.isFetchingAlbums; final bool isFetchingSongs = store.isFetchingSongs; if (!isFetchingArtists && !isFetchingAlbums && !isFetchingSongs) { final int artistCount = store.artists.length; final int albumCount = store.albums.length; final int songCount = store.songs.length; return Text('$artistCount artists, $albumCount albums, $songCount songs'); } return const Text(''); }), onTap: () => store.updateDatabase(), trailing: Observer(builder: (_) { if (store.isUpdatingDatabase) { return const CircularProgressIndicator(); } return Container( height: 0, width: 0, ); }), ), const Divider( height: 4.0, ), ListTile( title: const Text('Select library folders'), trailing: const Icon(Icons.chevron_right), onTap: () => _openFilePicker(), ), const Divider( height: 4.0, ), ], ); } Future _openFilePicker() async { try { var _path = await FilePicker.platform.getDirectoryPath(); print(_path); } on PlatformException catch (e) { print('Unsupported operation' + e.toString()); } catch (ex) { print(ex); } } }