123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- import 'dart:io';
- import 'package:flutter/foundation.dart';
- import 'package:flutter/material.dart';
- import 'package:photos/core/configuration.dart';
- import 'package:photos/core/event_bus.dart';
- import 'package:photos/events/opened_settings_event.dart';
- import 'package:photos/services/feature_flag_service.dart';
- import 'package:photos/theme/colors.dart';
- import 'package:photos/theme/ente_theme.dart';
- import 'package:photos/ui/settings/about_section_widget.dart';
- import 'package:photos/ui/settings/account_section_widget.dart';
- import 'package:photos/ui/settings/app_version_widget.dart';
- import 'package:photos/ui/settings/backup_section_widget.dart';
- import 'package:photos/ui/settings/debug_section_widget.dart';
- import 'package:photos/ui/settings/general_section_widget.dart';
- import 'package:photos/ui/settings/inherited_settings_state.dart';
- import 'package:photos/ui/settings/security_section_widget.dart';
- import 'package:photos/ui/settings/settings_title_bar_widget.dart';
- import 'package:photos/ui/settings/social_section_widget.dart';
- import 'package:photos/ui/settings/storage_card_widget.dart';
- import 'package:photos/ui/settings/support_section_widget.dart';
- import 'package:photos/ui/settings/theme_switch_widget.dart';
- class SettingsPage extends StatelessWidget {
- final ValueNotifier<String?> emailNotifier;
- const SettingsPage({Key? key, required this.emailNotifier}) : super(key: key);
- @override
- Widget build(BuildContext context) {
- Bus.instance.fire(OpenedSettingsEvent());
- final enteColorScheme = getEnteColorScheme(context);
- return Scaffold(
- body: Container(
- color: enteColorScheme.backdropMuted,
- child: SettingsStateContainer(
- child: _getBody(context, enteColorScheme),
- ),
- ),
- );
- }
- Widget _getBody(BuildContext context, EnteColorScheme colorScheme) {
- final hasLoggedIn = Configuration.instance.isLoggedIn();
- final enteTextTheme = getEnteTextTheme(context);
- final List<Widget> contents = [];
- contents.add(
- Container(
- constraints: const BoxConstraints(maxWidth: 350),
- padding: const EdgeInsets.symmetric(horizontal: 8),
- child: Align(
- alignment: Alignment.centerLeft,
- child: AnimatedBuilder(
- // [AnimatedBuilder] accepts any [Listenable] subtype.
- animation: emailNotifier,
- builder: (BuildContext context, Widget? child) {
- return Text(
- emailNotifier.value!,
- style: enteTextTheme.body.copyWith(
- color: colorScheme.textMuted,
- overflow: TextOverflow.ellipsis,
- ),
- );
- },
- ),
- ),
- ),
- );
- const sectionSpacing = SizedBox(height: 8);
- contents.add(const SizedBox(height: 8));
- if (hasLoggedIn) {
- contents.addAll([
- const StorageCardWidget(),
- const SizedBox(height: 12),
- const BackupSectionWidget(),
- sectionSpacing,
- const AccountSectionWidget(),
- sectionSpacing,
- ]);
- }
- contents.addAll([
- const SecuritySectionWidget(),
- sectionSpacing,
- const GeneralSectionWidget(),
- sectionSpacing,
- ]);
- if (Platform.isAndroid || kDebugMode) {
- contents.addAll([
- const ThemeSwitchWidget(),
- sectionSpacing,
- ]);
- }
- contents.addAll([
- const SupportSectionWidget(),
- sectionSpacing,
- const SocialSectionWidget(),
- sectionSpacing,
- const AboutSectionWidget(),
- ]);
- if (hasLoggedIn &&
- FeatureFlagService.instance.isInternalUserOrDebugBuild()) {
- contents.addAll([sectionSpacing, const DebugSectionWidget()]);
- }
- contents.add(const AppVersionWidget());
- contents.add(
- const Padding(
- padding: EdgeInsets.only(bottom: 60),
- ),
- );
- return SafeArea(
- bottom: false,
- child: SingleChildScrollView(
- child: Column(
- mainAxisSize: MainAxisSize.min,
- children: [
- const SettingsTitleBarWidget(),
- Padding(
- padding: const EdgeInsets.fromLTRB(16, 16, 16, 24),
- child: Column(
- children: contents,
- ),
- ),
- ],
- ),
- ),
- );
- }
- }
|