feat: adiciona menu Desenvolvedor as configuracoes, nova modal Sobre e icones da marca TatuChat
Some checks failed
Main Deploy Workflow / deploy_web (push) Has been cancelled
Main Deploy Workflow / deploy_playstore_internal (push) Has been cancelled
Close stale issues and PRs / stale (push) Has been cancelled

- Submenu Desenvolvedor em Configuracoes (Sobre o servidor, Registros, Variaveis e ambiente)
- Modal Sobre maior com logo, descricao com link e rodape (codigo-fonte, licenca, fechar)
- Descricao legivel no tema dark
- Drawer com a logo do projeto e links de support/formulario atualizados
- flutter_launcher_icons: regenera icones Android (mipmap + adaptive), Web, iOS, macOS, Windows
This commit is contained in:
2026-09-20 18:16:35 -03:00
parent 6c689d1f34
commit 762178d9f9
55 changed files with 221 additions and 191 deletions

View File

@@ -4,15 +4,15 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import 'package:async/async.dart';
import 'package:tatchat/config/setting_keys.dart';
import 'package:tatchat/l10n/l10n.dart';
import 'package:tatchat/utils/tatu_share.dart';
import 'package:tatchat/utils/platform_infos.dart';
import 'package:tatchat/widgets/avatar.dart';
import 'package:tatchat/widgets/matrix.dart';
import 'package:go_router/go_router.dart';
import 'package:material_ui/material_ui.dart';
import 'package:matrix/matrix.dart' hide Result;
import 'package:tatchat/config/setting_keys.dart';
import 'package:tatchat/l10n/l10n.dart';
import 'package:tatchat/utils/platform_infos.dart';
import 'package:tatchat/utils/tatu_share.dart';
import 'package:tatchat/widgets/avatar.dart';
import 'package:tatchat/widgets/matrix.dart';
import 'package:url_launcher/url_launcher.dart';
import 'package:url_launcher/url_launcher_string.dart';
@@ -183,18 +183,6 @@ class SettingsView extends StatelessWidget {
: null,
),
Divider(color: theme.dividerColor),
ListTile(
leading: const Icon(Icons.dns_outlined),
title: Text(
L10n.of(context).aboutHomeserver(
Matrix.of(context).client.userID?.domain ?? 'homeserver',
),
),
onTap: () => context.go('/rooms/settings/homeserver'),
tileColor: activeRoute.startsWith('/rooms/settings/homeserver')
? theme.colorScheme.surfaceContainerHigh
: null,
),
ListTile(
leading: const Icon(Icons.privacy_tip_outlined),
title: Text(L10n.of(context).privacy),
@@ -205,6 +193,57 @@ class SettingsView extends StatelessWidget {
title: Text(L10n.of(context).about),
onTap: () => PlatformInfos.showDialog(context),
),
Theme(
data: theme.copyWith(dividerColor: Colors.transparent),
child: ExpansionTile(
key: const Key('DeveloperMenu'),
leading: const Icon(Icons.code_outlined),
title: Text(L10n.of(context).developer),
tilePadding: const EdgeInsets.symmetric(horizontal: 16),
childrenPadding: const EdgeInsets.symmetric(vertical: 4),
controlAffinity: ListTileControlAffinity.trailing,
children: [
ListTile(
leading: const Icon(Icons.dns_outlined),
title: Text(
L10n.of(context).aboutHomeserver(
Matrix.of(
context,
).client.userID?.domain ?? 'homeserver',
),
),
dense: true,
contentPadding: const EdgeInsets.only(left: 40, right: 16),
onTap: () => context.go('/rooms/settings/homeserver'),
tileColor: activeRoute.startsWith(
'/rooms/settings/homeserver',
)
? theme.colorScheme.surfaceContainerHigh
: null,
),
ListTile(
leading: const Icon(Icons.list_alt_outlined),
title: Text(L10n.of(context).logs),
dense: true,
contentPadding: const EdgeInsets.only(left: 40, right: 16),
onTap: () => context.go('/logs'),
tileColor: activeRoute.startsWith('/logs')
? theme.colorScheme.surfaceContainerHigh
: null,
),
ListTile(
leading: const Icon(Icons.settings_applications_outlined),
title: Text(L10n.of(context).environmentVariables),
dense: true,
contentPadding: const EdgeInsets.only(left: 40, right: 16),
onTap: () => context.go('/configs'),
tileColor: activeRoute.startsWith('/configs')
? theme.colorScheme.surfaceContainerHigh
: null,
),
],
),
),
Divider(color: theme.dividerColor),
ListTile(
leading: const Icon(Icons.logout_outlined),