From b7fa89044855eccbab4ea77bbdf13030e9eba9f5 Mon Sep 17 00:00:00 2001 From: Myzel394 <50424412+Myzel394@users.noreply.github.com> Date: Thu, 25 Aug 2022 11:36:21 +0200 Subject: [PATCH] fixed iOS dropdown settings --- .../settings_screen/dropdown_tile.dart | 55 +++++++++++++++---- 1 file changed, 45 insertions(+), 10 deletions(-) diff --git a/lib/screens/settings_screen/dropdown_tile.dart b/lib/screens/settings_screen/dropdown_tile.dart index 15653c1..285ba1e 100644 --- a/lib/screens/settings_screen/dropdown_tile.dart +++ b/lib/screens/settings_screen/dropdown_tile.dart @@ -1,4 +1,6 @@ import 'package:flutter/material.dart'; +import 'package:flutter_platform_widgets/flutter_platform_widgets.dart'; +import 'package:quid_faciam_hodie/widgets/cupertino_dropdown.dart'; import 'package:settings_ui/settings_ui.dart'; const IN_DURATION = Duration(seconds: 1); @@ -140,6 +142,30 @@ class SettingsDropdownTile extends AbstractSettingsTile { final Widget? leading; final Widget? description; + Widget getCupertinoPicker() { + final items = values + .map( + (value) => DropdownMenuItem( + value: value, + child: Text(textMapping[value]!), + ), + ) + .toList(); + + return CupertinoDropdownButton( + itemExtent: 30, + onChanged: (value) { + if (value == null) { + return; + } + + onUpdate(value); + }, + value: value, + items: items, + ); + } + const SettingsDropdownTile({ Key? key, required this.title, @@ -154,15 +180,24 @@ class SettingsDropdownTile extends AbstractSettingsTile { @override Widget build(BuildContext context) { - return DropdownTile( - title: title, - values: values, - value: value, - textMapping: textMapping, - onUpdate: (value) => onUpdate(value as T), - enabled: enabled, - leading: leading, - description: description, - ); + if (isMaterial(context)) { + return DropdownTile( + title: title, + values: values, + value: value, + textMapping: textMapping, + onUpdate: (value) => onUpdate(value as T), + enabled: enabled, + leading: leading, + description: description, + ); + } else { + return SettingsTile( + leading: title, + title: getCupertinoPicker(), + enabled: enabled, + description: description, + ); + } } }