chore: adopt Dart 3.9 toolchain — honest floor + tall-style reformat (T-353)

Raise the declared minimums in pubspec.yaml to what our deps already
require: Flutter >=3.35.0 / Dart >=3.9.0 (was 3.19.0 / 3.5.0). alchemist
0.12 needs Flutter 3.32; Dart 3.9 first ships in Flutter 3.35, so 3.35 is
the binding floor. Pin the exact build toolchain in .fvmrc (Flutter
3.44.1).

Moving to the Dart 3.9 language level switches `dart format` to the new
"tall" style and enables two new lints. This commit is the resulting
mechanical churn, isolated from any behaviour change:
  - whole-tree `dart format` reformat (tall style)
  - `dart fix` for unnecessary_underscores + use_null_aware_elements

No runtime behaviour change; `make test` green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-11 12:11:53 +02:00
co-authored by Claude Opus 4.8
parent bcea5f15b7
commit 6d0ebab721
444 changed files with 7587 additions and 12849 deletions
+10 -16
View File
@@ -19,12 +19,12 @@ class _Recorder {
}
Widget _host(Widget child) => Directionality(
textDirection: TextDirection.ltr,
child: MediaQuery(
data: const MediaQueryData(),
child: Center(child: SizedBox(width: 200, height: 100, child: child)),
),
);
textDirection: TextDirection.ltr,
child: MediaQuery(
data: const MediaQueryData(),
child: Center(child: SizedBox(width: 200, height: 100, child: child)),
),
);
CustomTextEdit _build({
required FocusNode focusNode,
@@ -43,7 +43,8 @@ CustomTextEdit _build({
onDelete: () => r.deletes++,
onComposing: r.composings.add,
onAction: r.actions.add,
onKeyEvent: onKeyEvent ??
onKeyEvent:
onKeyEvent ??
(node, event) {
r.keys.add(event);
return KeyEventResult.ignored;
@@ -230,10 +231,7 @@ void main() {
await tester.pump();
final state = tester.state<CustomTextEditState>(find.byType(CustomTextEdit));
// Send a value shorter than the init state (2 chars) directly.
state.updateEditingValue(const TextEditingValue(
text: '',
selection: TextSelection.collapsed(offset: 0),
));
state.updateEditingValue(const TextEditingValue(text: '', selection: TextSelection.collapsed(offset: 0)));
expect(r.deletes, 1);
});
@@ -244,11 +242,7 @@ void main() {
await tester.pumpWidget(_host(_build(focusNode: focus, r: r, autofocus: true)));
await tester.pump();
final state = tester.state<CustomTextEditState>(find.byType(CustomTextEdit));
state.updateEditingValue(const TextEditingValue(
text: 'hi',
selection: TextSelection.collapsed(offset: 2),
composing: TextRange(start: 0, end: 2),
));
state.updateEditingValue(const TextEditingValue(text: 'hi', selection: TextSelection.collapsed(offset: 2), composing: TextRange(start: 0, end: 2)));
expect(r.composings, contains('hi'));
});