import 'package:feature_discovery/feature_discovery.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:fluttertoast/fluttertoast.dart'; import 'package:line_icons/line_icons.dart'; import '../intro_slider/app_intro.dart'; import '../util/extension_helper.dart'; import '../widgets/custom_widget.dart'; import '../widgets/feature_discovery.dart'; import '../widgets/general_dialog.dart'; import 'data_backup.dart'; import 'history.dart'; import 'languages.dart'; import 'layouts.dart'; import 'libries.dart'; import 'play_setting.dart'; import 'storage.dart'; import 'syncing.dart'; import 'theme.dart'; class Settings extends StatefulWidget { @override _SettingsState createState() => _SettingsState(); } class _SettingsState extends State { Widget _feedbackItem(IconData icon, String name, String url) => ListTile( onTap: () { url.launchUrl; Navigator.pop(context); }, dense: true, title: Row( children: [ Icon(icon, size: 20), SizedBox(width: 20), Text( name, maxLines: 2, style: context.textTheme.bodyText2, ), ], ), ); @override Widget build(BuildContext context) { final s = context.s; return AnnotatedRegion( value: SystemUiOverlayStyle( statusBarIconBrightness: Theme.of(context).accentColorBrightness, systemNavigationBarColor: Theme.of(context).primaryColor, systemNavigationBarIconBrightness: Theme.of(context).accentColorBrightness, ), child: Scaffold( appBar: AppBar( title: Text(s.settings), leading: CustomBackButton(), elevation: 0, backgroundColor: context.primaryColor, ), body: SafeArea( child: SingleChildScrollView( scrollDirection: Axis.vertical, child: Column( mainAxisAlignment: MainAxisAlignment.start, mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( padding: EdgeInsets.all(10.0), ), Container( height: 30.0, padding: EdgeInsets.symmetric(horizontal: 70), alignment: Alignment.centerLeft, child: Text(s.settingsPrefrence, style: context.textTheme.bodyText1 .copyWith(color: context.accentColor)), ), ListTile( onTap: () => Navigator.push(context, MaterialPageRoute(builder: (context) => ThemeSetting())), contentPadding: EdgeInsets.symmetric(horizontal: 25.0), leading: Icon(LineIcons.adjust_solid, color: context.accentColor), title: Text(s.settingsAppearance), subtitle: Text(s.settingsAppearanceDes), ), Divider(height: 1), ListTile( onTap: () => Navigator.push(context, MaterialPageRoute(builder: (context) => LayoutSetting())), contentPadding: EdgeInsets.symmetric(horizontal: 25.0), leading: Icon(LineIcons.stop_circle_solid, color: Colors.blueAccent), title: Text(s.settingsLayout), subtitle: Text(s.settingsLayoutDes), ), Divider(height: 1), ListTile( onTap: () => Navigator.push(context, MaterialPageRoute(builder: (context) => PlaySetting())), contentPadding: EdgeInsets.symmetric(horizontal: 25.0), leading: Icon(LineIcons.play_circle, color: Colors.redAccent), title: Text(s.play), subtitle: Text(s.settingsPlayDes), ), Divider(height: 1), ListTile( onTap: () => Navigator.push( context, MaterialPageRoute( builder: (context) => SyncingSetting())), contentPadding: EdgeInsets.symmetric(horizontal: 25.0), leading: Icon(LineIcons.cloud_download_alt_solid, color: Colors.yellow[700]), title: Text(s.settingsSyncing), subtitle: Text(s.settingsSyncingDes)), Divider(height: 1), ListTile( onTap: () => Navigator.push( context, MaterialPageRoute( builder: (context) => StorageSetting())), contentPadding: EdgeInsets.symmetric(horizontal: 25.0), leading: Icon(LineIcons.save, color: Colors.green[700]), title: Text(s.settingStorage), subtitle: Text(s.settingsStorageDes), ), Divider(height: 1), ListTile( onTap: () => Navigator.push(context, MaterialPageRoute(builder: (context) => PlayedHistory())), contentPadding: EdgeInsets.symmetric(horizontal: 25.0), leading: Icon(Icons.update, color: Colors.indigo[700]), title: Text(s.settingsHistory), subtitle: Text(s.settingsHistoryDes), ), Divider(height: 1), ListTile( onTap: () => generalSheet(context, title: s.settingsLanguages, child: LanguagesSetting()) .then((value) => setState(() {})), contentPadding: EdgeInsets.symmetric(horizontal: 25.0), leading: Icon(LineIcons.language_solid, color: Colors.purpleAccent), title: Text(s.settingsLanguages), subtitle: Text(s.settingsLanguagesDes), ), Divider(height: 1), ListTile( onTap: () { //_exportOmpl(context); Navigator.push(context, MaterialPageRoute(builder: (context) => DataBackup())); }, contentPadding: EdgeInsets.symmetric(horizontal: 25.0), leading: Icon(LineIcons.file_code_solid, color: Colors.lightGreen[700]), title: Text(s.settingsBackup), subtitle: Text(s.settingsBackupDes), ), Divider(height: 1), Padding( padding: EdgeInsets.all(10.0), ), Container( height: 30.0, padding: EdgeInsets.symmetric(horizontal: 70), alignment: Alignment.centerLeft, child: Text(s.settingsInfo, style: Theme.of(context) .textTheme .bodyText1 .copyWith(color: Theme.of(context).accentColor)), ), ListTile( onTap: () => Navigator.push(context, MaterialPageRoute(builder: (context) => Libries())), contentPadding: EdgeInsets.symmetric(horizontal: 25.0), leading: Icon(LineIcons.book_open_solid, color: Colors.purple[700]), title: Text(s.settingsLibraries), subtitle: Text(s.settingsLibrariesDes), ), Divider(height: 1), ListTile( onTap: () => generalSheet( context, title: s.settingsFeedback, child: Column( mainAxisSize: MainAxisSize.min, mainAxisAlignment: MainAxisAlignment.start, children: [ _feedbackItem(LineIcons.github, s.feedbackGithub, 'https://github.com/stonega/tsacdop/issues'), _feedbackItem(LineIcons.telegram, s.feedbackTelegram, 'https://t.me/joinchat/Bk3LkRpTHy40QYC78PK7Qg'), _feedbackItem( LineIcons.envelope_open_text_solid, s.feedbackEmail, 'mailto:?subject=Tsacdop Feedback'), _feedbackItem(LineIcons.google_play, s.feedbackPlay, 'https://play.google.com/store/apps/details?id=com.stonegate.tsacdop'), ], ), ), contentPadding: EdgeInsets.symmetric(horizontal: 25.0), leading: Icon(LineIcons.bug_solid, color: Colors.pink[700]), title: Text(s.settingsFeedback), subtitle: Text(s.settingsFeedbackDes), ), Divider( height: 2, ), ListTile( onTap: () { FeatureDiscovery.clearPreferences(context, { addFeature, menuFeature, playlistFeature, groupsFeature, addGroupFeature, configureGroup, configurePodcast, podcastFeature }); Fluttertoast.showToast( msg: s.toastDiscovery, gravity: ToastGravity.BOTTOM, ); }, contentPadding: EdgeInsets.symmetric(horizontal: 25.0), leading: Icon(LineIcons.capsules_solid, color: Colors.pinkAccent), title: Text(s.settingsDiscovery), ), Divider(height: 1), ListTile( onTap: () => Navigator.push( context, MaterialPageRoute( builder: (context) => SlideIntro(goto: Goto.settings))), contentPadding: EdgeInsets.symmetric(horizontal: 25.0), leading: Icon(LineIcons.columns_solid, color: Colors.blueGrey), title: Text(s.settingsAppIntro), ), Divider(height: 1), Padding( padding: EdgeInsets.all(10.0), ), ], ), ), ), ), ); } }