CKT String|Colors
This commit is contained in:
@@ -1,9 +1,11 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import '../colors/app_colors.dart';
|
||||
import '../strings/common_strings.dart';
|
||||
|
||||
import 'tap_bounce.dart';
|
||||
|
||||
const Color _teal = Color(0xFF2F9E94);
|
||||
const Color _accentPink = Color(0xFFFF55A7);
|
||||
const Color _teal = AppColors.teal;
|
||||
const Color _accentPink = AppColors.pink;
|
||||
|
||||
/// Diálogo de confirmação com a identidade visual do app (título rosa,
|
||||
/// botões em pílula), usado para todas as confirmações destrutivas/decisórias.
|
||||
@@ -11,7 +13,7 @@ Future<bool?> showConfirmDialog(
|
||||
BuildContext context, {
|
||||
required String title,
|
||||
String? message,
|
||||
String cancelLabel = 'Cancelar',
|
||||
String cancelLabel = CommonStrings.cancel,
|
||||
required String confirmLabel,
|
||||
Color confirmColor = _teal,
|
||||
}) {
|
||||
|
||||
@@ -1,30 +0,0 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
/// Gradiente usado em todas as app bars da aplicação. Direção puramente
|
||||
/// horizontal (não diagonal) de propósito: a app bar retrátil da Home é
|
||||
/// alta (~190) enquanto as das outras abas são baixas (~56) — um gradiente
|
||||
/// diagonal mostra proporções de cor bem diferentes consoante a altura,
|
||||
/// fazendo a Home parecer mais "cheia de cor" que as outras. Na horizontal,
|
||||
/// a transição depende só da largura (igual em todas as app bars), por
|
||||
/// isso todas ficam visualmente idênticas.
|
||||
const LinearGradient kAppBarGradient = LinearGradient(
|
||||
begin: Alignment.centerLeft,
|
||||
end: Alignment.centerRight,
|
||||
colors: [Color(0xFF1C7A6E), Color(0xFF8FD4BB)],
|
||||
);
|
||||
|
||||
/// Cor sólida (sem gradiente, de propósito) usada nos botões e cards verdes
|
||||
/// da aplicação — botões de "Entrar"/"Criar conta", "Adicionar criança" e o
|
||||
/// card "Vídeos educativos". Só as app bars usam gradiente ([kAppBarGradient]);
|
||||
/// mantém-se como [LinearGradient] com as duas cores iguais para não obrigar
|
||||
/// a mudar todos os `decoration: gradient: kGreenButtonGradient` existentes.
|
||||
const LinearGradient kGreenButtonGradient = LinearGradient(
|
||||
colors: [Color(0xFF2F9E94), Color(0xFF2F9E94)],
|
||||
);
|
||||
|
||||
/// Gradiente rosa vivo do card do quiz na Home.
|
||||
const LinearGradient kPinkHeroGradient = LinearGradient(
|
||||
begin: Alignment.topLeft,
|
||||
end: Alignment.bottomRight,
|
||||
colors: [Color(0xFFFF55A7), Color(0xFFE83E93)],
|
||||
);
|
||||
@@ -1,4 +1,5 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import '../colors/app_colors.dart';
|
||||
|
||||
/// Notificação em formato de pílula flutuante (fundo branco, texto rosa,
|
||||
/// cantos totalmente arredondados, com um pequeno "pop" de entrada), usada
|
||||
@@ -62,7 +63,7 @@ class _AnimatedPill extends StatelessWidget {
|
||||
message,
|
||||
textAlign: TextAlign.center,
|
||||
style: const TextStyle(
|
||||
color: Color(0xFFFF55A7),
|
||||
color: AppColors.pink,
|
||||
fontWeight: FontWeight.w800,
|
||||
fontSize: 14,
|
||||
),
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import '../colors/app_colors.dart';
|
||||
import '../strings/privacy_strings.dart';
|
||||
|
||||
const Color kPrivacyTeal = Color(0xFF2F9E94);
|
||||
const Color kPrivacyTeal = AppColors.teal;
|
||||
|
||||
/// Um dos itens de consentimento mostrados no ecrã de privacidade. Itens
|
||||
/// com [required] a false (ex.: recolha de dados técnicos de utilização)
|
||||
@@ -19,25 +21,14 @@ class PrivacyConsentItem {
|
||||
|
||||
/// Texto fixo dos consentimentos de privacidade, mostrado no cadastro.
|
||||
const List<PrivacyConsentItem> kPrivacyConsentItems = [
|
||||
PrivacyConsentItem(
|
||||
id: 'health_data',
|
||||
text:
|
||||
'Confirmo que sou encarregado(a) de educação ou responsável legal '
|
||||
'da criança avaliada e concordo com o processamento dos dados de '
|
||||
'saúde que introduzo na Check-Teeth Kids, exclusivamente para gerar '
|
||||
'o resultado da triagem digital.',
|
||||
),
|
||||
PrivacyConsentItem(id: 'health_data', text: PrivacyStrings.healthDataConsent),
|
||||
PrivacyConsentItem(
|
||||
id: 'privacy_policy',
|
||||
text:
|
||||
'Li e aceito os Termos e Condições apresentados anteriormente e as '
|
||||
'condições de privacidade descritas nesta página.',
|
||||
text: PrivacyStrings.privacyPolicyConsent,
|
||||
),
|
||||
PrivacyConsentItem(
|
||||
id: 'tracking',
|
||||
text:
|
||||
'Ajude-nos a melhorar a Check-Teeth Kids, autorizando a recolha de '
|
||||
'dados técnicos de utilização.',
|
||||
text: PrivacyStrings.trackingConsent,
|
||||
required: false,
|
||||
),
|
||||
];
|
||||
@@ -66,7 +57,7 @@ class PrivacyHeader extends StatelessWidget {
|
||||
),
|
||||
const SizedBox(height: 16),
|
||||
const Text(
|
||||
'Política de Privacidade',
|
||||
PrivacyStrings.headerTitle,
|
||||
textAlign: TextAlign.center,
|
||||
style: TextStyle(
|
||||
fontSize: 20,
|
||||
|
||||
@@ -1,30 +1,8 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import '../colors/app_colors.dart';
|
||||
import '../strings/terms_strings.dart';
|
||||
|
||||
const Color kTermsPink = Color(0xFFFF55A7);
|
||||
|
||||
/// Parágrafos dos Termos e Condições — texto fixo, igual em todo o app
|
||||
/// (ecrã de bloqueio no cadastro e ecrã informativo em Ajustes).
|
||||
const List<String> kTermsParagraphs = [
|
||||
'© 2026, Francisca Salgado Ferreira Pacheco Silva. A aplicação, o método '
|
||||
'de avaliação, arquitetura e conteúdos são propriedade intelectual '
|
||||
'exclusiva da autora.',
|
||||
'A Check-Teeth Kids é uma aplicação desenvolvida com o propósito de '
|
||||
'promover a literacia em saúde oral infantil, através de conteúdos '
|
||||
'educativos e de um quiz de triagem digital, com especial enfoque na '
|
||||
'identificação precoce de sinais associados à má oclusão dentária.',
|
||||
'Com base nas respostas fornecidas, é apresentado um resultado que '
|
||||
'identifica sinais de má oclusão já instalados e fatores de risco '
|
||||
'associados, destinado a auxiliar o utilizador na decisão de procurar '
|
||||
'uma avaliação clínica especializada.',
|
||||
'Esta ferramenta não tem como objetivo realizar diagnósticos clínicos, '
|
||||
'nem substituir a avaliação por um profissional de saúde oral. '
|
||||
'Destina-se exclusivamente a uma triagem inicial e informativa, '
|
||||
'promovendo o encaminhamento atempado para um médico dentista '
|
||||
'especialista (Odontopediatra ou Ortodontista).',
|
||||
'Esta aplicação foi desenvolvida no âmbito de um projeto de dissertação '
|
||||
'de Mestrado, encontrando-se numa fase de desenvolvimento e ainda sem '
|
||||
'validação clínica formal concluída.',
|
||||
];
|
||||
const Color kTermsPink = AppColors.pink;
|
||||
|
||||
/// Emblema circular rosa + título "Termos e Condições", reutilizado nos
|
||||
/// dois ecrãs que mostram este conteúdo.
|
||||
@@ -50,7 +28,7 @@ class TermsHeader extends StatelessWidget {
|
||||
),
|
||||
const SizedBox(height: 16),
|
||||
const Text(
|
||||
'Termos e Condições',
|
||||
TermsStrings.headerTitle,
|
||||
textAlign: TextAlign.center,
|
||||
style: TextStyle(
|
||||
fontSize: 20,
|
||||
@@ -85,10 +63,10 @@ class TermsBody extends StatelessWidget {
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
for (var i = 0; i < kTermsParagraphs.length; i++) ...[
|
||||
for (var i = 0; i < TermsStrings.paragraphs.length; i++) ...[
|
||||
if (i > 0) const SizedBox(height: 14),
|
||||
Text(
|
||||
kTermsParagraphs[i],
|
||||
TermsStrings.paragraphs[i],
|
||||
textAlign: TextAlign.center,
|
||||
style: TextStyle(
|
||||
fontSize: 13,
|
||||
|
||||
Reference in New Issue
Block a user