settings_page.dart 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. import 'package:flutter/foundation.dart';
  2. import 'package:flutter/material.dart';
  3. import 'package:flutter/widgets.dart';
  4. import 'package:photos/core/configuration.dart';
  5. import 'package:photos/ui/settings/account_section_widget.dart';
  6. import 'package:photos/ui/settings/app_version_widget.dart';
  7. import 'package:photos/ui/settings/backup_section_widget.dart';
  8. import 'package:photos/ui/settings/danger_section_widget.dart';
  9. import 'package:photos/ui/settings/debug_section_widget.dart';
  10. import 'package:photos/ui/settings/details_section_widget.dart';
  11. import 'package:photos/ui/settings/info_section_widget.dart';
  12. import 'package:photos/ui/settings/security_section_widget.dart';
  13. import 'package:photos/ui/settings/social_section_widget.dart';
  14. import 'package:photos/ui/settings/support_section_widget.dart';
  15. class SettingsPage extends StatelessWidget {
  16. const SettingsPage({Key key}) : super(key: key);
  17. @override
  18. Widget build(BuildContext context) {
  19. return Scaffold(
  20. body: _getBody(context),
  21. );
  22. }
  23. Widget _getBody(BuildContext context) {
  24. final hasLoggedIn = Configuration.instance.getToken() != null;
  25. final List<Widget> contents = [];
  26. final sectionDivider = Divider(
  27. height: 10,
  28. color: Theme.of(context).colorScheme.onSurface.withOpacity(0.4),
  29. );
  30. if (hasLoggedIn) {
  31. contents.addAll([
  32. DetailsSectionWidget(),
  33. sectionDivider,
  34. BackupSectionWidget(),
  35. sectionDivider,
  36. AccountSectionWidget(),
  37. sectionDivider,
  38. ]);
  39. }
  40. contents.addAll([
  41. SecuritySectionWidget(),
  42. sectionDivider,
  43. SupportSectionWidget(),
  44. sectionDivider,
  45. SocialSectionWidget(),
  46. sectionDivider,
  47. InfoSectionWidget(),
  48. ]);
  49. if (hasLoggedIn) {
  50. contents.addAll([
  51. sectionDivider,
  52. DangerSectionWidget(),
  53. ]);
  54. }
  55. contents.add(AppVersionWidget());
  56. if (kDebugMode && hasLoggedIn) {
  57. contents.add(DebugSectionWidget());
  58. }
  59. return SingleChildScrollView(
  60. child: Padding(
  61. padding: const EdgeInsets.all(12.0),
  62. child: Column(
  63. children: contents,
  64. ),
  65. ),
  66. );
  67. }
  68. }