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:
@@ -23,11 +23,11 @@ enum KeyModifier {
|
||||
|
||||
/// Display string used in palette + tooltip hints.
|
||||
String get display => switch (this) {
|
||||
KeyModifier.ctrl => 'Ctrl',
|
||||
KeyModifier.alt => 'Alt',
|
||||
KeyModifier.shift => 'Shift',
|
||||
KeyModifier.meta => 'Cmd',
|
||||
};
|
||||
KeyModifier.ctrl => 'Ctrl',
|
||||
KeyModifier.alt => 'Alt',
|
||||
KeyModifier.shift => 'Shift',
|
||||
KeyModifier.meta => 'Cmd',
|
||||
};
|
||||
}
|
||||
|
||||
/// A modifier-set + a single key, identified by layout-independent
|
||||
|
||||
@@ -23,11 +23,7 @@ import 'when_clause.dart';
|
||||
/// to fire when the sequence matches and the when-clause is true.
|
||||
@immutable
|
||||
class KeymapBinding {
|
||||
const KeymapBinding({
|
||||
required this.sequence,
|
||||
required this.intent,
|
||||
this.when,
|
||||
});
|
||||
const KeymapBinding({required this.sequence, required this.intent, this.when});
|
||||
|
||||
/// Convenience constructor for a single-chord binding.
|
||||
KeymapBinding.chord(KeyChord chord, {required this.intent, this.when}) : sequence = [chord];
|
||||
@@ -204,9 +200,7 @@ class Keymap {
|
||||
/// must come first. We don't dedupe — a no-op match in a later layer
|
||||
/// just earns the first slot.
|
||||
static List<KeymapBinding> _flatten(List<KeymapLayer> layers) {
|
||||
return [
|
||||
for (final l in layers.reversed) ...l.bindings,
|
||||
];
|
||||
return [for (final l in layers.reversed) ...l.bindings];
|
||||
}
|
||||
|
||||
@override
|
||||
|
||||
@@ -41,13 +41,10 @@ const String kKeymapOverridesSetting = 'app.keymap.overrides';
|
||||
const String kKeymapUserFile = 'keybindings.yaml';
|
||||
|
||||
class KeymapService extends ChangeNotifier {
|
||||
KeymapService({
|
||||
required SettingsStore settings,
|
||||
required Directory appDir,
|
||||
AssetBundle? bundle,
|
||||
}) : _settings = settings,
|
||||
_appDir = appDir,
|
||||
_bundle = bundle ?? rootBundle;
|
||||
KeymapService({required SettingsStore settings, required Directory appDir, AssetBundle? bundle})
|
||||
: _settings = settings,
|
||||
_appDir = appDir,
|
||||
_bundle = bundle ?? rootBundle;
|
||||
|
||||
final SettingsStore _settings;
|
||||
final Directory _appDir;
|
||||
@@ -127,11 +124,7 @@ class KeymapService extends ChangeNotifier {
|
||||
/// defaults, the user can override either via the user file or
|
||||
/// settings overlay.
|
||||
void registerCommandBinding(String chordSpec, String commandId, {String? when}) {
|
||||
_contributions.add(KeymapBinding(
|
||||
sequence: KeyChord.parseSequence(chordSpec),
|
||||
intent: InvokeCommandIntent(commandId),
|
||||
when: WhenExpr.tryParse(when),
|
||||
));
|
||||
_contributions.add(KeymapBinding(sequence: KeyChord.parseSequence(chordSpec), intent: InvokeCommandIntent(commandId), when: WhenExpr.tryParse(when)));
|
||||
_rebuildActive();
|
||||
}
|
||||
|
||||
@@ -149,12 +142,7 @@ class KeymapService extends ChangeNotifier {
|
||||
}
|
||||
|
||||
void _rebuildActive() {
|
||||
final layers = <KeymapLayer>[
|
||||
if (_preset != null) _preset!,
|
||||
KeymapLayer(name: 'contributions', bindings: List.unmodifiable(_contributions)),
|
||||
if (_userFile != null) _userFile!,
|
||||
if (_settingsOverlay != null) _settingsOverlay!,
|
||||
];
|
||||
final layers = <KeymapLayer>[?_preset, KeymapLayer(name: 'contributions', bindings: List.unmodifiable(_contributions)), ?_userFile, ?_settingsOverlay];
|
||||
_active = Keymap(layers);
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
@@ -33,18 +33,9 @@ enum SeqOutcome {
|
||||
|
||||
@immutable
|
||||
class SeqResult {
|
||||
const SeqResult.fired(Intent this.intent, this.count)
|
||||
: outcome = SeqOutcome.fired,
|
||||
passKey = null;
|
||||
const SeqResult.pending()
|
||||
: outcome = SeqOutcome.pending,
|
||||
intent = null,
|
||||
count = 1,
|
||||
passKey = null;
|
||||
const SeqResult.unmatched(this.passKey)
|
||||
: outcome = SeqOutcome.unmatched,
|
||||
intent = null,
|
||||
count = 1;
|
||||
const SeqResult.fired(Intent this.intent, this.count) : outcome = SeqOutcome.fired, passKey = null;
|
||||
const SeqResult.pending() : outcome = SeqOutcome.pending, intent = null, count = 1, passKey = null;
|
||||
const SeqResult.unmatched(this.passKey) : outcome = SeqOutcome.unmatched, intent = null, count = 1;
|
||||
|
||||
final SeqOutcome outcome;
|
||||
final Intent? intent;
|
||||
@@ -53,12 +44,9 @@ class SeqResult {
|
||||
}
|
||||
|
||||
class SequenceMatcher {
|
||||
SequenceMatcher({
|
||||
required Keymap Function() keymap,
|
||||
required Map<String, bool> Function() context,
|
||||
this.captureCounts = true,
|
||||
}) : _keymap = keymap,
|
||||
_context = context;
|
||||
SequenceMatcher({required Keymap Function() keymap, required Map<String, bool> Function() context, this.captureCounts = true})
|
||||
: _keymap = keymap,
|
||||
_context = context;
|
||||
|
||||
final Keymap Function() _keymap;
|
||||
final Map<String, bool> Function() _context;
|
||||
|
||||
Reference in New Issue
Block a user