advanced_settings_screen.dart 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. import 'package:flutter/material.dart';
  2. import 'package:photos/theme/ente_theme.dart';
  3. import 'package:photos/ui/components/buttons/icon_button_widget.dart';
  4. import 'package:photos/ui/components/captioned_text_widget.dart';
  5. import 'package:photos/ui/components/menu_item_widget/menu_item_widget.dart';
  6. import 'package:photos/ui/components/title_bar_title_widget.dart';
  7. import 'package:photos/ui/components/title_bar_widget.dart';
  8. import 'package:photos/ui/tools/debug/app_storage_viewer.dart';
  9. import 'package:photos/ui/viewer/gallery/photo_grid_size_picker_page.dart';
  10. import 'package:photos/utils/local_settings.dart';
  11. import 'package:photos/utils/navigation_util.dart';
  12. class AdvancedSettingsScreen extends StatefulWidget {
  13. const AdvancedSettingsScreen({super.key});
  14. @override
  15. State<AdvancedSettingsScreen> createState() => _AdvancedSettingsScreenState();
  16. }
  17. class _AdvancedSettingsScreenState extends State<AdvancedSettingsScreen> {
  18. late int _photoGridSize;
  19. @override
  20. void initState() {
  21. _photoGridSize = LocalSettings.instance.getPhotoGridSize();
  22. super.initState();
  23. }
  24. @override
  25. Widget build(BuildContext context) {
  26. final colorScheme = getEnteColorScheme(context);
  27. return Scaffold(
  28. body: CustomScrollView(
  29. primary: false,
  30. slivers: <Widget>[
  31. TitleBarWidget(
  32. flexibleSpaceTitle: const TitleBarTitleWidget(
  33. title: "Advanced",
  34. ),
  35. actionIcons: [
  36. IconButtonWidget(
  37. icon: Icons.close_outlined,
  38. iconButtonType: IconButtonType.secondary,
  39. onTap: () {
  40. Navigator.pop(context);
  41. Navigator.pop(context);
  42. },
  43. ),
  44. ],
  45. ),
  46. SliverList(
  47. delegate: SliverChildBuilderDelegate(
  48. (delegateBuildContext, index) {
  49. return Padding(
  50. padding: const EdgeInsets.symmetric(horizontal: 16),
  51. child: Padding(
  52. padding: const EdgeInsets.symmetric(vertical: 20),
  53. child: Column(
  54. mainAxisSize: MainAxisSize.min,
  55. children: [
  56. Column(
  57. children: [
  58. GestureDetector(
  59. onTap: () {
  60. routeToPage(
  61. context,
  62. const PhotoGridSizePickerPage(),
  63. ).then((value) {
  64. setState(() {
  65. _photoGridSize = LocalSettings.instance
  66. .getPhotoGridSize();
  67. });
  68. });
  69. },
  70. child: MenuItemWidget(
  71. captionedTextWidget: CaptionedTextWidget(
  72. title: "Photo grid size",
  73. subTitle: _photoGridSize.toString(),
  74. ),
  75. menuItemColor: colorScheme.fillFaint,
  76. trailingWidget: Icon(
  77. Icons.chevron_right_outlined,
  78. color: colorScheme.strokeBase,
  79. ),
  80. singleBorderRadius: 8,
  81. alignCaptionedTextToLeft: true,
  82. isGestureDetectorDisabled: true,
  83. ),
  84. ),
  85. const SizedBox(
  86. height: 24,
  87. ),
  88. MenuItemWidget(
  89. captionedTextWidget: const CaptionedTextWidget(
  90. title: "Manage device storage",
  91. ),
  92. menuItemColor: colorScheme.fillFaint,
  93. trailingWidget: Icon(
  94. Icons.chevron_right_outlined,
  95. color: colorScheme.strokeBase,
  96. ),
  97. singleBorderRadius: 8,
  98. alignCaptionedTextToLeft: true,
  99. onTap: () async {
  100. routeToPage(context, const AppStorageViewer());
  101. },
  102. ),
  103. ],
  104. ),
  105. ],
  106. ),
  107. ),
  108. );
  109. },
  110. childCount: 1,
  111. ),
  112. ),
  113. ],
  114. ),
  115. );
  116. }
  117. }