Checklist v4 from contracts: step 31, each wheel by hand
/ crosscheck (push) Successful in 1s
CI / Analyze & Test (push) Failing after 5s
CI / Debug APK (push) Has been skipped

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DDwfd6Ki8UfG4hK6W5YpJz
This commit is contained in:
2026-10-15 22:30:40 +09:00
parent 3398da3823
commit 317de3425a
4 changed files with 118 additions and 15 deletions
+15 -8
View File
@@ -9,6 +9,7 @@ import '../link/net.dart';
import '../shell_scope.dart';
import '../theme/light.dart';
import '../theme/palette.dart';
import '../theme/sun.dart';
class SettingsPage extends StatelessWidget {
const SettingsPage({
@@ -58,14 +59,20 @@ class SettingsPage extends StatelessWidget {
title: const Text('Dark or bright'),
subtitle: ValueListenableBuilder(
valueListenable: themes.lux,
builder: (context, lux, _) => Text(
lux == null
? "Auto follows Android's dark theme and its schedule (no light sensor). "
'The status bar button holds one; a long press there is auto again.'
: 'Auto follows the light sensor: dark at ${LightSwitch.darkAt.round()} lux or less, '
'bright from ${LightSwitch.brightAt.round()}; now ${lux.toStringAsFixed(lux < 10 ? 1 : 0)} lux. '
'The status bar button holds one; a long press there is auto again.',
),
builder: (context, lux, _) {
final sun = themes.sunElevationNow;
final now = lux != null
? 'now ${lux.toStringAsFixed(lux < 10 ? 1 : 0)} lux; dark at '
'${LightSwitch.darkAt.round()} or less, bright from ${LightSwitch.brightAt.round()}'
: sun != null
? 'now ${sun.round()}° above the horizon at the last GNSS position; '
'dark below ${darkBelowDeg.round()}°'
: 'no GNSS position yet';
return Text(
'Auto follows ${themes.autoSource} ($now). '
'The status bar button holds one; a long press there is auto again.',
);
},
),
),
Padding(