Implement multi-screen app UI flow and navigation

This commit is contained in:
Rijad Zuzo
2026-02-15 13:57:24 +01:00
parent d5146d6b09
commit ac9577c759
21 changed files with 1648 additions and 60 deletions
+1 -1
View File
@@ -20,7 +20,7 @@ class AppConfig {
/// Enables fake backend implementation for local/offline development.
static bool get useFakeBackend =>
const bool.fromEnvironment('USE_FAKE_BACKEND', defaultValue: false);
const bool.fromEnvironment('USE_FAKE_BACKEND', defaultValue: true);
/// Runtime override for backend URL (e.g. local settings screen).
static void overrideBackendBaseUrl(String? baseUrl) {
+36 -12
View File
@@ -4,31 +4,55 @@ import 'package:flutter/material.dart';
class AppTheme {
AppTheme._();
static const Color background = Color(0xFFEDF0F2);
static const Color background = Color(0xFFF3F6F8);
static const Color surface = Color(0xFFFFFFFF);
static const Color primary = Color(0xFF253840);
static const Color accent = Color(0xFF00B6F0);
static const Color primary = Color(0xFF1E3541);
static const Color accent = Color(0xFF1AB6C8);
static const Color textPrimary = Color(0xFF18303A);
static const Color textSecondary = Color(0xFF58707A);
/// Builds the Material [ThemeData].
static ThemeData light() {
final ColorScheme colorScheme = ColorScheme.fromSeed(
seedColor: primary,
primary: primary,
secondary: accent,
surface: surface,
brightness: Brightness.light,
final ColorScheme colorScheme = ColorScheme.fromSeed(seedColor: primary);
final TextTheme textTheme = ThemeData.light().textTheme.apply(
fontFamily: 'WorkSans',
bodyColor: textPrimary,
displayColor: textPrimary,
);
return ThemeData(
useMaterial3: true,
colorScheme: colorScheme,
colorScheme: colorScheme.copyWith(
primary: primary,
secondary: accent,
surface: surface,
),
scaffoldBackgroundColor: background,
textTheme: textTheme.copyWith(
headlineMedium: textTheme.headlineMedium?.copyWith(
fontWeight: FontWeight.w700,
letterSpacing: 0.1,
),
titleLarge: textTheme.titleLarge?.copyWith(
fontWeight: FontWeight.w700,
letterSpacing: 0.1,
),
titleMedium: textTheme.titleMedium?.copyWith(
fontWeight: FontWeight.w600,
),
),
appBarTheme: const AppBarTheme(
centerTitle: false,
backgroundColor: surface,
foregroundColor: primary,
backgroundColor: Colors.transparent,
foregroundColor: textPrimary,
elevation: 0,
),
cardTheme: CardThemeData(
color: surface,
elevation: 0,
margin: EdgeInsets.zero,
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(24)),
),
);
}
}