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
+8 -14
View File
@@ -15,12 +15,12 @@ void main() {
test('fromEvent maps every FileSystemEvent.type to a wire kind', () {
final dir = Directory.systemTemp;
FileSystemEvent ev(int type) => switch (type) {
FileSystemEvent.create => FileSystemCreateEvent('${dir.path}/f', false),
FileSystemEvent.delete => FileSystemDeleteEvent('${dir.path}/f', false),
FileSystemEvent.modify => FileSystemModifyEvent('${dir.path}/f', false, false),
FileSystemEvent.move => FileSystemMoveEvent('${dir.path}/f', false, '${dir.path}/g'),
_ => FileSystemModifyEvent('${dir.path}/f', false, false),
};
FileSystemEvent.create => FileSystemCreateEvent('${dir.path}/f', false),
FileSystemEvent.delete => FileSystemDeleteEvent('${dir.path}/f', false),
FileSystemEvent.modify => FileSystemModifyEvent('${dir.path}/f', false, false),
FileSystemEvent.move => FileSystemMoveEvent('${dir.path}/f', false, '${dir.path}/g'),
_ => FileSystemModifyEvent('${dir.path}/f', false, false),
};
expect(FileChangeKind.fromEvent(ev(FileSystemEvent.create)), FileChangeKind.created);
expect(FileChangeKind.fromEvent(ev(FileSystemEvent.delete)), FileChangeKind.deleted);
expect(FileChangeKind.fromEvent(ev(FileSystemEvent.modify)), FileChangeKind.modified);
@@ -65,15 +65,9 @@ void main() {
// amount. firstWhere completes on the first matching event;
// the timeout fails the test with a clear message if inotify
// never delivers (instead of asserting on an empty list).
final saw = watcher.stream.firstWhere(
(c) => c.path == 'new.txt',
orElse: () => throw StateError('stream closed before new.txt arrived'),
);
final saw = watcher.stream.firstWhere((c) => c.path == 'new.txt', orElse: () => throw StateError('stream closed before new.txt arrived'));
await File('${sandbox.path}/new.txt').writeAsString('hi');
final change = await saw.timeout(
ioTimeout,
onTimeout: () => fail('no `new.txt` event within ${ioTimeout.inSeconds}s'),
);
final change = await saw.timeout(ioTimeout, onTimeout: () => fail('no `new.txt` event within ${ioTimeout.inSeconds}s'));
expect(change.path, 'new.txt');
});