feat(watch): Wear OS companion app - UX surfaces + bridge client (#91-E, #91-F)

This commit is contained in:
2026-07-25 20:00:01 +02:00
parent 68a87d1658
commit c65a5a76a9
26 changed files with 1973 additions and 0 deletions

View File

@ -0,0 +1,71 @@
import 'package:flutter/material.dart';
ThemeData watchTheme() {
const background = Color(0xFF080A12);
const surface = Color(0xFF141824);
const text = Color(0xFFF5F1E8);
const muted = Color(0xFFA7ADBA);
const accent = Color(0xFFD72638);
final textTheme = Typography.whiteMountainView.copyWith(
labelSmall: const TextStyle(
fontSize: 10,
fontWeight: FontWeight.w800,
color: muted,
),
bodySmall: const TextStyle(fontSize: 11, color: muted, height: 1.15),
bodyMedium: const TextStyle(fontSize: 13, color: text, height: 1.15),
titleSmall: const TextStyle(
fontSize: 16,
fontWeight: FontWeight.w800,
color: text,
height: 1.05,
),
displayLarge: const TextStyle(
fontSize: 44,
fontWeight: FontWeight.w900,
color: text,
height: 0.95,
fontFeatures: [FontFeature.tabularFigures()],
),
);
return ThemeData(
useMaterial3: true,
brightness: Brightness.dark,
scaffoldBackgroundColor: background,
colorScheme: const ColorScheme.dark(
primary: accent,
onPrimary: Colors.white,
secondary: Color(0xFFC9A24A),
surface: surface,
onSurface: text,
onSurfaceVariant: muted,
error: Color(0xFFFF4D5E),
),
textTheme: textTheme,
filledButtonTheme: FilledButtonThemeData(
style: FilledButton.styleFrom(
minimumSize: const Size.fromHeight(38),
padding: const EdgeInsets.symmetric(horizontal: 14, vertical: 10),
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)),
textStyle: textTheme.labelLarge?.copyWith(
fontSize: 13,
fontWeight: FontWeight.w800,
),
),
),
outlinedButtonTheme: OutlinedButtonThemeData(
style: OutlinedButton.styleFrom(
minimumSize: const Size.fromHeight(38),
padding: const EdgeInsets.symmetric(horizontal: 14, vertical: 10),
side: const BorderSide(color: Color(0xFF303748)),
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)),
textStyle: textTheme.labelLarge?.copyWith(
fontSize: 13,
fontWeight: FontWeight.w800,
),
),
),
);
}