Refactor theme management: Replace AppColors with AppPalette

- Removed AppColors class and migrated all references to AppPalette.
- Updated VaultAccessScreen, MenuDrawer, NoteCard, SearchAppBar, and other widgets to use AppPalette for color management.
- Introduced AppPalette to handle light and dark themes with appropriate color schemes.
- Adjusted theme application in AppTheme to utilize AppPalette extensions.
- Updated tests to reflect changes in theme structure and color references.
This commit is contained in:
2026-05-23 13:55:40 +02:00
parent 29881183ed
commit 1dede9eb78
16 changed files with 1031 additions and 618 deletions
+38 -52
View File
@@ -1,6 +1,6 @@
import 'package:flutter/material.dart';
import 'package:notas/data/api_client.dart';
import 'package:notas/theme/app_colors.dart';
import 'package:notas/theme/app_palette.dart';
class VaultAccessScreen extends StatefulWidget {
const VaultAccessScreen({
@@ -75,9 +75,11 @@ class _VaultAccessScreenState extends State<VaultAccessScreen> {
@override
Widget build(BuildContext context) {
final AppPalette palette = Theme.of(context).extension<AppPalette>()!;
return Scaffold(
body: Container(
decoration: const BoxDecoration(gradient: AppColors.backdropGradient),
decoration: BoxDecoration(gradient: palette.backdropGradient),
child: SafeArea(
child: Column(
children: [
@@ -90,12 +92,12 @@ class _VaultAccessScreenState extends State<VaultAccessScreen> {
child: Container(
padding: const EdgeInsets.all(24),
decoration: BoxDecoration(
color: AppColors.surface,
color: palette.cardBackground,
borderRadius: BorderRadius.circular(24),
border: Border.all(color: AppColors.borderMuted),
border: Border.all(color: palette.border),
boxShadow: [
BoxShadow(
color: AppColors.shadow,
color: palette.shadowSoft,
blurRadius: 30,
offset: const Offset(0, 18),
),
@@ -107,7 +109,7 @@ class _VaultAccessScreenState extends State<VaultAccessScreen> {
children: [
const Icon(
Icons.lock_outline,
color: AppColors.accent,
color: Colors.white,
size: 44,
),
const SizedBox(height: 16),
@@ -115,7 +117,7 @@ class _VaultAccessScreenState extends State<VaultAccessScreen> {
'Mis Notas',
textAlign: TextAlign.center,
style: TextStyle(
color: AppColors.textPrimary,
color: Colors.white,
fontSize: 30,
fontWeight: FontWeight.w700,
),
@@ -125,7 +127,7 @@ class _VaultAccessScreenState extends State<VaultAccessScreen> {
'Tus notas se guardan cifradas en este dispositivo. La cuenta y la sincronización vendrán después.',
textAlign: TextAlign.center,
style: TextStyle(
color: AppColors.textSecondary,
color: palette.textSecondary,
height: 1.4,
),
),
@@ -141,32 +143,30 @@ class _VaultAccessScreenState extends State<VaultAccessScreen> {
controller: _endpointController,
enabled: !widget.isBusy,
keyboardType: TextInputType.url,
style: const TextStyle(
color: AppColors.textPrimary,
),
style: const TextStyle(color: Colors.white),
decoration: InputDecoration(
labelText: 'API endpoint',
labelStyle: const TextStyle(
color: AppColors.textSecondary,
labelStyle: TextStyle(
color: palette.textSecondary,
),
filled: true,
fillColor: AppColors.fill,
fillColor: palette.fill,
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(14),
borderSide: const BorderSide(
color: AppColors.border,
borderSide: BorderSide(
color: palette.border,
),
),
enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(14),
borderSide: const BorderSide(
color: AppColors.border,
borderSide: BorderSide(
color: palette.border,
),
),
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(14),
borderSide: const BorderSide(
color: AppColors.accent,
borderSide: BorderSide(
color: palette.accent,
width: 1.2,
),
),
@@ -177,32 +177,26 @@ class _VaultAccessScreenState extends State<VaultAccessScreen> {
controller: _emailController,
enabled: !widget.isBusy,
keyboardType: TextInputType.text,
style: const TextStyle(
color: AppColors.textPrimary,
),
style: const TextStyle(color: Colors.white),
decoration: InputDecoration(
labelText: 'Usuario',
labelStyle: const TextStyle(
color: AppColors.textSecondary,
labelStyle: TextStyle(
color: palette.textSecondary,
),
filled: true,
fillColor: AppColors.fill,
fillColor: palette.fill,
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(14),
borderSide: const BorderSide(
color: AppColors.border,
),
borderSide: BorderSide(color: palette.border),
),
enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(14),
borderSide: const BorderSide(
color: AppColors.border,
),
borderSide: BorderSide(color: palette.border),
),
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(14),
borderSide: const BorderSide(
color: AppColors.accent,
borderSide: BorderSide(
color: palette.accent,
width: 1.2,
),
),
@@ -213,32 +207,26 @@ class _VaultAccessScreenState extends State<VaultAccessScreen> {
controller: _passwordController,
enabled: !widget.isBusy,
obscureText: true,
style: const TextStyle(
color: AppColors.textPrimary,
),
style: const TextStyle(color: Colors.white),
decoration: InputDecoration(
labelText: 'Contraseña',
labelStyle: const TextStyle(
color: AppColors.textSecondary,
labelStyle: TextStyle(
color: palette.textSecondary,
),
filled: true,
fillColor: AppColors.fill,
fillColor: palette.fill,
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(14),
borderSide: const BorderSide(
color: AppColors.border,
),
borderSide: BorderSide(color: palette.border),
),
enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(14),
borderSide: const BorderSide(
color: AppColors.border,
),
borderSide: BorderSide(color: palette.border),
),
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(14),
borderSide: const BorderSide(
color: AppColors.accent,
borderSide: BorderSide(
color: palette.accent,
width: 1.2,
),
),
@@ -271,10 +259,8 @@ class _VaultAccessScreenState extends State<VaultAccessScreen> {
padding: const EdgeInsets.symmetric(
vertical: 14,
),
side: const BorderSide(
color: AppColors.textDisabled,
),
foregroundColor: AppColors.textPrimary,
side: BorderSide(color: palette.border),
foregroundColor: palette.textPrimary,
),
child: const Text('Iniciar sesión'),
),