v2.1.0: Add floating window overlay functionality

Major Features:
- Floating overlay window with system-level persistence
- Split decimal display (main speed prominent, decimal smaller/faded)
- Optimized content sizing for maximum readability
- Navigation icon trigger for overlay activation
- Multiple close options (overlay button + long-press navigation)

Technical Implementation:
- Added flutter_overlay_window dependency
- Android SYSTEM_ALERT_WINDOW permissions
- Overlay service configuration in AndroidManifest
- Enhanced flex ratios for better space utilization
- BoxFit.contain for improved content scaling

UX Improvements:
- Streamlined overlay launch (removed permission prompts)
- Cleaner visual hierarchy with split speed display
- Responsive design for both portrait and landscape
- Professional overlay styling matching app theme

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Mikkeli Matlock
2025-08-25 23:03:31 +09:00
parent e6ffb00b2a
commit 2c2267e5ae
7 changed files with 339 additions and 67 deletions
+6
View File
@@ -3,6 +3,7 @@ import 'package:flutter/material.dart';
class ColorTheme {
final Color background;
final Color speedText;
final Color speedTextSub;
final Color headingText;
final Color unitText;
final String name;
@@ -10,6 +11,7 @@ class ColorTheme {
const ColorTheme({
required this.background,
required this.speedText,
required this.speedTextSub,
required this.headingText,
required this.unitText,
required this.name,
@@ -22,6 +24,7 @@ class ColorThemes {
name: 'Yuzuki',
background: Color.fromARGB(255, 114, 85, 109),
speedText: Color.fromARGB(255, 246, 224, 255),
speedTextSub: Color.fromARGB(255, 245, 217, 245),
headingText: Color.fromARGB(255, 244, 201, 255),
unitText: Color.fromARGB(255, 244, 201, 255),
),
@@ -29,6 +32,7 @@ class ColorThemes {
name: 'Yuuparo',
background: Color.fromARGB(255, 85, 99, 112),
speedText: Color.fromARGB(255, 255, 171, 16),
speedTextSub: Color.fromARGB(255, 245, 204, 116),
headingText: Color.fromARGB(255, 228, 235, 238),
unitText: Color.fromARGB(255, 141, 196, 184),
),
@@ -36,6 +40,7 @@ class ColorThemes {
name: 'Yuzuki Light',
background: Color.fromARGB(255, 246, 224, 255),
speedText: Color.fromARGB(255, 114, 85, 109),
speedTextSub: Color.fromARGB(255, 161, 138, 170),
headingText: Color.fromARGB(255, 140, 94, 151),
unitText: Color.fromARGB(255, 114, 85, 109),
),
@@ -43,6 +48,7 @@ class ColorThemes {
name: 'Yuuparo Light',
background: Color.fromARGB(255, 228, 235, 238),
speedText: Color.fromARGB(255, 85, 99, 112),
speedTextSub: Color.fromARGB(255, 100, 100, 131),
headingText: Color.fromARGB(255, 255, 157, 65),
unitText: Color.fromARGB(255, 98, 124, 118),
),