mirror of
https://github.com/kuhyx/testsAndMisc-archive.git
synced 2026-11-10 19:07:06 +01:00
Last of the four drifted apps. The theme was ColorScheme.fromSeed(teal) plus fifteen ad hoc colour literals that mostly bypassed it -- not one widget outside main.dart read colorScheme at all, so the seed barely affected what you saw. It now uses design_system-v0.1.0's buildLightTheme(), and the literals that have a real theme role read it off the scheme. Light, not dark, deliberately: the receipt screens carry black-on-white helper text, so inverting brightness would make it unreadable. The Colors.black54 sites are exactly those, now onSurfaceVariant. The error family maps cleanly -- Colors.red to error, red.shade50 to errorContainer with onErrorContainer text on it, and the swipe-to-delete background+icon to error/onError so the fill and the glyph drawn on it cannot drift apart. The four category dots (deepOrange/amber/blueGrey/teal) stay literals, with a comment saying why: they encode which category an item is, not a theme role, and a single-accent system has no four distinct hues to lend them. Mapping them onto primary/secondary/tertiary would make the categories stop being distinguishable, which is their only job. They are tracked in nielsen-audit.md as needing a categorical ramp. Note this decouples the default dot from the old seed -- both were Colors.teal, so they used to match by coincidence rather than by design. Verified: 60/60 tests, 100% line coverage across 11 lib files, analyze clean apart from four pre-existing unnecessary_unawaited infos. A temporary assertion pumped the real app and read primary=ffb8862e and surface=fff6f4f3 off a live Scaffold, confirming the palette changed rather than merely compiling. Colour literals: 15 -> 4. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XS1m7b1piBtAL22USLW6jL
40 lines
1.2 KiB
Dart
40 lines
1.2 KiB
Dart
import 'dart:async';
|
|
|
|
import 'package:billsplit/state/app_state.dart';
|
|
import 'package:billsplit/ui/home_screen.dart';
|
|
import 'package:design_system/design_system.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:provider/provider.dart';
|
|
|
|
void main() {
|
|
WidgetsFlutterBinding.ensureInitialized();
|
|
final state = AppState();
|
|
unawaited(state.load());
|
|
runApp(BillSplitApp(state: state));
|
|
}
|
|
|
|
/// Root widget wiring [AppState] into the tree.
|
|
class BillSplitApp extends StatelessWidget {
|
|
/// Creates the app around an existing [state].
|
|
const BillSplitApp({required this.state, super.key});
|
|
|
|
/// The single app-wide state instance.
|
|
final AppState state;
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return ChangeNotifierProvider.value(
|
|
value: state,
|
|
child: MaterialApp(
|
|
title: 'BillSplit',
|
|
debugShowCheckedModeBanner: false,
|
|
// The shared light theme, replacing a teal-seeded scheme. Light, not
|
|
// dark: the receipt screens carry black-on-white helper text, so
|
|
// switching brightness here would make it unreadable.
|
|
theme: buildLightTheme(),
|
|
home: const HomeScreen(),
|
|
),
|
|
);
|
|
}
|
|
}
|