From 508286423b74a043e2a9fb43886307462681721a Mon Sep 17 00:00:00 2001 From: Pierre HUBERT Date: Tue, 27 Apr 2021 09:44:11 +0200 Subject: [PATCH] Fix application settings on iOS --- .../routes/settings/account_security_settings.dart | 13 +++++++++---- lib/ui/routes/settings/account_settings_route.dart | 3 ++- lib/ui/routes/settings/application_settings.dart | 11 +++++++---- .../widgets/settings/text_settings_edit_tile.dart | 4 +++- lib/utils/flutter_utils.dart | 4 +++- lib/utils/string_utils.dart | 6 ++++++ 6 files changed, 30 insertions(+), 11 deletions(-) create mode 100644 lib/utils/string_utils.dart diff --git a/lib/ui/routes/settings/account_security_settings.dart b/lib/ui/routes/settings/account_security_settings.dart index 50e5627..345c668 100644 --- a/lib/ui/routes/settings/account_security_settings.dart +++ b/lib/ui/routes/settings/account_security_settings.dart @@ -8,6 +8,7 @@ import 'package:comunic/ui/widgets/dialogs/auto_sized_dialog_content_widget.dart import 'package:comunic/ui/widgets/new_password_input_widget.dart'; import 'package:comunic/ui/widgets/settings/header_spacer_section.dart'; import 'package:comunic/utils/account_utils.dart'; +import 'package:comunic/utils/flutter_utils.dart'; import 'package:comunic/utils/intl_utils.dart'; import 'package:comunic/utils/ui_utils.dart'; import 'package:flutter/material.dart'; @@ -39,15 +40,19 @@ class _AccountSecuritySettingsScreenState ), SettingsTile( title: tr("Change your security questions"), - subtitle: tr( - "Your security questions can be used to recover an access to your account when you loose your password..."), + subtitle: isIOS + ? null + : tr( + "Your security questions can be used to recover an access to your account when you loose your password..."), onPressed: (_) => _changeSecurityQuestions(), subtitleMaxLines: 3, ), SettingsTile( title: tr("Disconnect all your devices"), - subtitle: tr( - "Disconnect all your devices from Comunic, including the current one. Use this option if one of the device you use for Comunic was stolen."), + subtitle: isIOS + ? null + : tr( + "Disconnect all your devices from Comunic, including the current one. Use this option if one of the device you use for Comunic was stolen."), onPressed: (_) => _disconnectAllDevices(), subtitleMaxLines: 6, ), diff --git a/lib/ui/routes/settings/account_settings_route.dart b/lib/ui/routes/settings/account_settings_route.dart index 1f1bc82..6719047 100644 --- a/lib/ui/routes/settings/account_settings_route.dart +++ b/lib/ui/routes/settings/account_settings_route.dart @@ -7,6 +7,7 @@ import 'package:comunic/ui/routes/settings/general_account_settings.dart'; import 'package:comunic/ui/routes/settings/notifications_settings.dart'; import 'package:comunic/ui/routes/tour_route.dart'; import 'package:comunic/ui/widgets/settings/header_spacer_section.dart'; +import 'package:comunic/utils/flutter_utils.dart'; import 'package:comunic/utils/intl_utils.dart'; import 'package:comunic/utils/ui_utils.dart'; import 'package:flutter/material.dart'; @@ -184,7 +185,7 @@ class __AccountSettingsBodyState extends State<_AccountSettingsBody> { .map((f) => SettingsTile( title: f.title, leading: Icon(f.icon), - subtitle: f.subtitle, + subtitle: isIOS ? null : f.subtitle, onPressed: (_) => _openSectionsAsNewRoute(f), subtitleMaxLines: 3, )) diff --git a/lib/ui/routes/settings/application_settings.dart b/lib/ui/routes/settings/application_settings.dart index f11e8b7..b9c3a4c 100644 --- a/lib/ui/routes/settings/application_settings.dart +++ b/lib/ui/routes/settings/application_settings.dart @@ -2,6 +2,7 @@ import 'package:comunic/helpers/preferences_helper.dart'; import 'package:comunic/helpers/server_config_helper.dart'; import 'package:comunic/ui/widgets/async_screen_widget.dart'; import 'package:comunic/ui/widgets/settings/header_spacer_section.dart'; +import 'package:comunic/utils/flutter_utils.dart'; import 'package:comunic/utils/intl_utils.dart'; import 'package:comunic/utils/ui_utils.dart'; import 'package:flutter/material.dart'; @@ -69,7 +70,7 @@ class _ApplicationSettingsState extends State { ), SettingsTile( title: tr("About this application"), - subtitle: tr("Learn more about us"), + subtitle: isIOS ? null : tr("Learn more about us"), onPressed: (_) => showAboutAppDialog(context), ) ], @@ -83,8 +84,10 @@ class _ApplicationSettingsState extends State { _PreferencesSettingsTile( preferencesKey: PreferencesKeyList.FORCE_MOBILE_MODE, title: tr("Force mobile mode"), - subtitle: tr( - "Force the smartphone mode of the application to be used, even when tablet mode could be used."), + subtitle: isIOS + ? null + : tr( + "Force the smartphone mode of the application to be used, even when tablet mode could be used."), onChange: _updatedSettings, helper: _preferencesHelper, ), @@ -130,7 +133,7 @@ class _PreferencesSettingsTile extends SettingsTile { onToggle: _doChange, switchValue: helper.getBool(preferencesKey), titleMaxLines: 2, - subtitleMaxLines: 3, + subtitleMaxLines: 4, ); } diff --git a/lib/ui/widgets/settings/text_settings_edit_tile.dart b/lib/ui/widgets/settings/text_settings_edit_tile.dart index e45ad2e..9f99360 100644 --- a/lib/ui/widgets/settings/text_settings_edit_tile.dart +++ b/lib/ui/widgets/settings/text_settings_edit_tile.dart @@ -1,5 +1,7 @@ import 'package:comunic/ui/dialogs/single_input_dialog.dart'; +import 'package:comunic/utils/flutter_utils.dart'; import 'package:comunic/utils/intl_utils.dart'; +import 'package:comunic/utils/string_utils.dart'; import 'package:flutter/material.dart'; import 'package:settings_ui/settings_ui.dart'; @@ -39,7 +41,7 @@ class TextEditSettingsTile extends SettingsTile { Widget build(BuildContext context) { return SettingsTile( title: title, - subtitle: currValue, + subtitle: isIOS ? reduceString(currValue, 20) :currValue, onPressed: readOnly ? null : (_) => _changeValue(context), ); } diff --git a/lib/utils/flutter_utils.dart b/lib/utils/flutter_utils.dart index f170468..69c3a93 100644 --- a/lib/utils/flutter_utils.dart +++ b/lib/utils/flutter_utils.dart @@ -7,4 +7,6 @@ import 'package:flutter/foundation.dart' show kIsWeb; bool get isWeb => kIsWeb; -bool get isAndroid => !isWeb && Platform.isAndroid; \ No newline at end of file +bool get isAndroid => !isWeb && Platform.isAndroid; + +bool get isIOS => !isWeb && Platform.isIOS; \ No newline at end of file diff --git a/lib/utils/string_utils.dart b/lib/utils/string_utils.dart new file mode 100644 index 0000000..430bd46 --- /dev/null +++ b/lib/utils/string_utils.dart @@ -0,0 +1,6 @@ +/// String utilities +/// +/// @author Pierre Hubert + +String reduceString(String str, int maxLen) => + str.length <= maxLen ? str : str.substring(0, maxLen - 3) + "...";