Better looking lanuage selection dialog

This commit is contained in:
Ming Ming 2021-08-02 13:53:48 +08:00
parent a7099d635d
commit c8d452795c
2 changed files with 13 additions and 7 deletions

View file

@ -6,11 +6,13 @@ class FancyOptionPickerItem {
required this.label,
this.isSelected = false,
this.onSelect,
this.dense = false,
});
String label;
bool isSelected;
VoidCallback? onSelect;
bool dense;
}
/// A fancy looking dialog to pick an option
@ -41,6 +43,7 @@ class FancyOptionPicker extends StatelessWidget {
: null,
),
onTap: e.isSelected ? null : e.onSelect,
dense: e.dense,
),
))
.toList(),

View file

@ -12,6 +12,7 @@ import 'package:nc_photos/metadata_task_manager.dart';
import 'package:nc_photos/pref.dart';
import 'package:nc_photos/snack_bar_manager.dart';
import 'package:nc_photos/theme.dart';
import 'package:nc_photos/widget/fancy_option_picker.dart';
import 'package:url_launcher/url_launcher.dart';
class SettingsArguments {
@ -140,19 +141,21 @@ class _SettingsState extends State<Settings> {
}
void _onLanguageTap(BuildContext context) {
final selected =
Pref.inst().getLanguageOr(language_util.supportedLanguages[0]!.langId);
showDialog(
context: context,
builder: (context) => SimpleDialog(
children: language_util.supportedLanguages.values
.map<Widget>((lang) => SimpleDialogOption(
onPressed: () {
builder: (context) => FancyOptionPicker(
items: language_util.supportedLanguages.values
.map((lang) => FancyOptionPickerItem(
label: lang.nativeName,
isSelected: lang.langId == selected,
onSelect: () {
_log.info(
"[_onLanguageTap] Set language: ${lang.nativeName}");
Navigator.of(context).pop(lang.langId);
},
child: ListTile(
title: Text(lang.nativeName),
),
dense: true,
))
.toList(),
),