mirror of
				https://github.com/immich-app/immich.git
				synced 2025-11-04 03:27:09 -05:00 
			
		
		
		
	fix: add beta toggle in landscape mode (#20187)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
This commit is contained in:
		
							parent
							
								
									ad65e9011a
								
							
						
					
					
						commit
						b4780e89af
					
				@ -2,21 +2,27 @@ import 'package:auto_route/auto_route.dart';
 | 
				
			|||||||
import 'package:easy_localization/easy_localization.dart';
 | 
					import 'package:easy_localization/easy_localization.dart';
 | 
				
			||||||
import 'package:flutter/material.dart';
 | 
					import 'package:flutter/material.dart';
 | 
				
			||||||
import 'package:flutter_hooks/flutter_hooks.dart' hide Store;
 | 
					import 'package:flutter_hooks/flutter_hooks.dart' hide Store;
 | 
				
			||||||
 | 
					import 'package:immich_mobile/entities/store.entity.dart';
 | 
				
			||||||
import 'package:immich_mobile/extensions/build_context_extensions.dart';
 | 
					import 'package:immich_mobile/extensions/build_context_extensions.dart';
 | 
				
			||||||
import 'package:immich_mobile/routing/router.dart';
 | 
					import 'package:immich_mobile/routing/router.dart';
 | 
				
			||||||
import 'package:immich_mobile/widgets/settings/advanced_settings.dart';
 | 
					import 'package:immich_mobile/widgets/settings/advanced_settings.dart';
 | 
				
			||||||
import 'package:immich_mobile/widgets/settings/asset_list_settings/asset_list_settings.dart';
 | 
					import 'package:immich_mobile/widgets/settings/asset_list_settings/asset_list_settings.dart';
 | 
				
			||||||
import 'package:immich_mobile/widgets/settings/asset_viewer_settings/asset_viewer_settings.dart';
 | 
					import 'package:immich_mobile/widgets/settings/asset_viewer_settings/asset_viewer_settings.dart';
 | 
				
			||||||
import 'package:immich_mobile/widgets/settings/backup_settings/backup_settings.dart';
 | 
					import 'package:immich_mobile/widgets/settings/backup_settings/backup_settings.dart';
 | 
				
			||||||
 | 
					import 'package:immich_mobile/widgets/settings/beta_sync_settings/beta_sync_settings.dart';
 | 
				
			||||||
import 'package:immich_mobile/widgets/settings/beta_timeline_list_tile.dart';
 | 
					import 'package:immich_mobile/widgets/settings/beta_timeline_list_tile.dart';
 | 
				
			||||||
import 'package:immich_mobile/widgets/settings/language_settings.dart';
 | 
					import 'package:immich_mobile/widgets/settings/language_settings.dart';
 | 
				
			||||||
import 'package:immich_mobile/widgets/settings/networking_settings/networking_settings.dart';
 | 
					import 'package:immich_mobile/widgets/settings/networking_settings/networking_settings.dart';
 | 
				
			||||||
import 'package:immich_mobile/widgets/settings/notification_setting.dart';
 | 
					import 'package:immich_mobile/widgets/settings/notification_setting.dart';
 | 
				
			||||||
import 'package:immich_mobile/widgets/settings/preference_settings/preference_setting.dart';
 | 
					import 'package:immich_mobile/widgets/settings/preference_settings/preference_setting.dart';
 | 
				
			||||||
import 'package:immich_mobile/entities/store.entity.dart';
 | 
					 | 
				
			||||||
import 'package:immich_mobile/widgets/settings/settings_card.dart';
 | 
					import 'package:immich_mobile/widgets/settings/settings_card.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
enum SettingSection {
 | 
					enum SettingSection {
 | 
				
			||||||
 | 
					  beta(
 | 
				
			||||||
 | 
					    'beta_sync',
 | 
				
			||||||
 | 
					    Icons.sync_outlined,
 | 
				
			||||||
 | 
					    "beta_sync_subtitle",
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
  advanced(
 | 
					  advanced(
 | 
				
			||||||
    'advanced',
 | 
					    'advanced',
 | 
				
			||||||
    Icons.build_outlined,
 | 
					    Icons.build_outlined,
 | 
				
			||||||
@ -63,6 +69,7 @@ enum SettingSection {
 | 
				
			|||||||
  final IconData icon;
 | 
					  final IconData icon;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Widget get widget => switch (this) {
 | 
					  Widget get widget => switch (this) {
 | 
				
			||||||
 | 
					        SettingSection.beta => const _BetaLandscapeToggle(),
 | 
				
			||||||
        SettingSection.advanced => const AdvancedSettings(),
 | 
					        SettingSection.advanced => const AdvancedSettings(),
 | 
				
			||||||
        SettingSection.assetViewer => const AssetViewerSettings(),
 | 
					        SettingSection.assetViewer => const AssetViewerSettings(),
 | 
				
			||||||
        SettingSection.backup => const BackupSettings(),
 | 
					        SettingSection.backup => const BackupSettings(),
 | 
				
			||||||
@ -98,29 +105,32 @@ class _MobileLayout extends StatelessWidget {
 | 
				
			|||||||
  @override
 | 
					  @override
 | 
				
			||||||
  Widget build(BuildContext context) {
 | 
					  Widget build(BuildContext context) {
 | 
				
			||||||
    final List<Widget> settings = SettingSection.values
 | 
					    final List<Widget> settings = SettingSection.values
 | 
				
			||||||
        .map(
 | 
					        .expand(
 | 
				
			||||||
          (setting) => SettingsCard(
 | 
					          (setting) => setting == SettingSection.beta
 | 
				
			||||||
            title: setting.title.tr(),
 | 
					              ? [
 | 
				
			||||||
            subtitle: setting.subtitle.tr(),
 | 
					                  const BetaTimelineListTile(),
 | 
				
			||||||
            icon: setting.icon,
 | 
					                  if (Store.isBetaTimelineEnabled)
 | 
				
			||||||
            settingRoute: SettingsSubRoute(section: setting),
 | 
					                    SettingsCard(
 | 
				
			||||||
          ),
 | 
					                      icon: Icons.sync_outlined,
 | 
				
			||||||
 | 
					                      title: 'beta_sync'.tr(),
 | 
				
			||||||
 | 
					                      subtitle: 'beta_sync_subtitle'.tr(),
 | 
				
			||||||
 | 
					                      settingRoute: const BetaSyncSettingsRoute(),
 | 
				
			||||||
 | 
					                    ),
 | 
				
			||||||
 | 
					                ]
 | 
				
			||||||
 | 
					              : [
 | 
				
			||||||
 | 
					                  SettingsCard(
 | 
				
			||||||
 | 
					                    title: setting.title.tr(),
 | 
				
			||||||
 | 
					                    subtitle: setting.subtitle.tr(),
 | 
				
			||||||
 | 
					                    icon: setting.icon,
 | 
				
			||||||
 | 
					                    settingRoute: SettingsSubRoute(section: setting),
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
        .toList();
 | 
					        .toList();
 | 
				
			||||||
    return ListView(
 | 
					    return ListView(
 | 
				
			||||||
      physics: const ClampingScrollPhysics(),
 | 
					      physics: const ClampingScrollPhysics(),
 | 
				
			||||||
      padding: const EdgeInsets.only(top: 10.0, bottom: 56),
 | 
					      padding: const EdgeInsets.only(top: 10.0, bottom: 56),
 | 
				
			||||||
      children: [
 | 
					      children: [...settings],
 | 
				
			||||||
        const BetaTimelineListTile(),
 | 
					 | 
				
			||||||
        if (Store.isBetaTimelineEnabled)
 | 
					 | 
				
			||||||
          SettingsCard(
 | 
					 | 
				
			||||||
            icon: Icons.sync_outlined,
 | 
					 | 
				
			||||||
            title: 'beta_sync'.tr(),
 | 
					 | 
				
			||||||
            subtitle: 'beta_sync_subtitle'.tr(),
 | 
					 | 
				
			||||||
            settingRoute: const BetaSyncSettingsRoute(),
 | 
					 | 
				
			||||||
          ),
 | 
					 | 
				
			||||||
        ...settings,
 | 
					 | 
				
			||||||
      ],
 | 
					 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -137,20 +147,20 @@ class _TabletLayout extends HookWidget {
 | 
				
			|||||||
        Expanded(
 | 
					        Expanded(
 | 
				
			||||||
          flex: 2,
 | 
					          flex: 2,
 | 
				
			||||||
          child: CustomScrollView(
 | 
					          child: CustomScrollView(
 | 
				
			||||||
            slivers: SettingSection.values
 | 
					            slivers: [
 | 
				
			||||||
                .map(
 | 
					              ...SettingSection.values.map(
 | 
				
			||||||
                  (s) => SliverToBoxAdapter(
 | 
					                (s) => SliverToBoxAdapter(
 | 
				
			||||||
                    child: ListTile(
 | 
					                  child: ListTile(
 | 
				
			||||||
                      title: Text(s.title).tr(),
 | 
					                    title: Text(s.title).tr(),
 | 
				
			||||||
                      leading: Icon(s.icon),
 | 
					                    leading: Icon(s.icon),
 | 
				
			||||||
                      selected: s.index == selectedSection.value.index,
 | 
					                    selected: s.index == selectedSection.value.index,
 | 
				
			||||||
                      selectedColor: context.primaryColor,
 | 
					                    selectedColor: context.primaryColor,
 | 
				
			||||||
                      selectedTileColor: context.themeData.highlightColor,
 | 
					                    selectedTileColor: context.themeData.highlightColor,
 | 
				
			||||||
                      onTap: () => selectedSection.value = s,
 | 
					                    onTap: () => selectedSection.value = s,
 | 
				
			||||||
                    ),
 | 
					 | 
				
			||||||
                  ),
 | 
					                  ),
 | 
				
			||||||
                )
 | 
					                ),
 | 
				
			||||||
                .toList(),
 | 
					              ),
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
          ),
 | 
					          ),
 | 
				
			||||||
        ),
 | 
					        ),
 | 
				
			||||||
        const VerticalDivider(width: 1),
 | 
					        const VerticalDivider(width: 1),
 | 
				
			||||||
@ -163,6 +173,22 @@ class _TabletLayout extends HookWidget {
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class _BetaLandscapeToggle extends HookWidget {
 | 
				
			||||||
 | 
					  const _BetaLandscapeToggle();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @override
 | 
				
			||||||
 | 
					  Widget build(BuildContext context) {
 | 
				
			||||||
 | 
					    return Column(
 | 
				
			||||||
 | 
					      mainAxisAlignment: MainAxisAlignment.start,
 | 
				
			||||||
 | 
					      children: [
 | 
				
			||||||
 | 
					        const SizedBox(height: 100, child: BetaTimelineListTile()),
 | 
				
			||||||
 | 
					        if (Store.isBetaTimelineEnabled)
 | 
				
			||||||
 | 
					          const Expanded(child: BetaSyncSettings()),
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@RoutePage()
 | 
					@RoutePage()
 | 
				
			||||||
class SettingsSubPage extends StatelessWidget {
 | 
					class SettingsSubPage extends StatelessWidget {
 | 
				
			||||||
  const SettingsSubPage(this.section, {super.key});
 | 
					  const SettingsSubPage(this.section, {super.key});
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user