123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 |
- import 'dart:io';
- import 'package:ente_auth/core/configuration.dart';
- import 'package:ente_auth/l10n/l10n.dart';
- import 'package:ente_auth/onboarding/view/onboarding_page.dart';
- import 'package:ente_auth/services/user_service.dart';
- import 'package:ente_auth/theme/colors.dart';
- import 'package:ente_auth/theme/ente_theme.dart';
- import 'package:ente_auth/ui/components/buttons/button_widget.dart';
- import 'package:ente_auth/ui/components/models/button_result.dart';
- import 'package:ente_auth/ui/components/notification_warning_widget.dart';
- import 'package:ente_auth/ui/settings/about_section_widget.dart';
- import 'package:ente_auth/ui/settings/account_section_widget.dart';
- import 'package:ente_auth/ui/settings/app_version_widget.dart';
- import 'package:ente_auth/ui/settings/data/data_section_widget.dart';
- import 'package:ente_auth/ui/settings/data/export_widget.dart';
- import 'package:ente_auth/ui/settings/security_section_widget.dart';
- import 'package:ente_auth/ui/settings/social_section_widget.dart';
- import 'package:ente_auth/ui/settings/support_dev_widget.dart';
- import 'package:ente_auth/ui/settings/support_section_widget.dart';
- import 'package:ente_auth/ui/settings/theme_switch_widget.dart';
- import 'package:ente_auth/ui/settings/title_bar_widget.dart';
- import 'package:ente_auth/utils/dialog_util.dart';
- import 'package:ente_auth/utils/navigation_util.dart';
- import 'package:flutter/foundation.dart';
- import 'package:flutter/material.dart';
- class SettingsPage extends StatelessWidget {
- final ValueNotifier<String?> emailNotifier;
- SettingsPage({Key? key, required this.emailNotifier}) : super(key: key);
- @override
- Widget build(BuildContext context) {
- final _hasLoggedIn = Configuration.instance.hasConfiguredAccount();
- if (_hasLoggedIn) {
- UserService.instance.getUserDetailsV2().ignore();
- }
- final enteColorScheme = getEnteColorScheme(context);
- return Scaffold(
- body: Container(
- color: enteColorScheme.backdropBase,
- child: _getBody(context, enteColorScheme),
- ),
- );
- }
- Widget _getBody(BuildContext context, EnteColorScheme colorScheme) {
- final _hasLoggedIn = Configuration.instance.hasConfiguredAccount();
- final enteTextTheme = getEnteTextTheme(context);
- const sectionSpacing = SizedBox(height: 8);
- final List<Widget> contents = [];
- if (_hasLoggedIn) {
- contents.add(
- Container(
- 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,
- ),
- );
- },
- ),
- ),
- ),
- );
- contents.addAll([
- const SizedBox(height: 12),
- AccountSectionWidget(),
- sectionSpacing,
- ]);
- } else {
- contents.addAll([
- NotificationWidget(
- startIcon: Icons.account_circle_sharp,
- actionIcon: Icons.arrow_forward,
- text: context.l10n.signInToBackup,
- type: NotificationType.notice,
- onTap: () async {
- ButtonResult? result = await showChoiceActionSheet(
- context,
- title: context.l10n.warning,
- body: context.l10n.sigInBackupReminder,
- secondButtonLabel: context.l10n.singIn,
- secondButtonAction: ButtonAction.second,
- firstButtonLabel: context.l10n.exportCodes,
- );
- if (result == null) return;
- if (result.action == ButtonAction.first) {
- await handleExportClick(context);
- } else {
- if (result.action == ButtonAction.second) {
- await routeToPage(
- context,
- const OnboardingPage(),
- );
- }
- }
- },
- ),
- sectionSpacing,
- sectionSpacing,
- ]);
- }
- contents.addAll([
- DataSectionWidget(),
- sectionSpacing,
- const SecuritySectionWidget(),
- sectionSpacing,
- ]);
- if (Platform.isAndroid || kDebugMode) {
- contents.addAll([
- const ThemeSwitchWidget(),
- sectionSpacing,
- ]);
- }
- contents.addAll([
- const SupportSectionWidget(),
- sectionSpacing,
- const SocialSectionWidget(),
- sectionSpacing,
- const AboutSectionWidget(),
- const AppVersionWidget(),
- const SupportDevWidget(),
- 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,
- ),
- ),
- ],
- ),
- ),
- );
- }
- }
|