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:
@@ -42,13 +42,7 @@ class _BacklinksViewState extends State<BacklinksView> {
|
||||
builder: (context, _) {
|
||||
final tokens = ClideTheme.of(context).surface;
|
||||
if (c.activePath == null) {
|
||||
return const Padding(
|
||||
padding: EdgeInsets.all(12),
|
||||
child: ClideText(
|
||||
'Open a file to see its links.',
|
||||
muted: true,
|
||||
),
|
||||
);
|
||||
return const Padding(padding: EdgeInsets.all(12), child: ClideText('Open a file to see its links.', muted: true));
|
||||
}
|
||||
return Semantics(
|
||||
label: 'backlinks for ${c.activePath}',
|
||||
@@ -62,35 +56,16 @@ class _BacklinksViewState extends State<BacklinksView> {
|
||||
children: [
|
||||
Padding(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 4),
|
||||
child: ClideText(
|
||||
c.activePath!.split('/').last,
|
||||
color: tokens.globalForeground,
|
||||
),
|
||||
child: ClideText(c.activePath!.split('/').last, color: tokens.globalForeground),
|
||||
),
|
||||
if (c.error != null)
|
||||
Padding(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 4),
|
||||
child: ClideText(
|
||||
c.error!,
|
||||
color: tokens.statusError,
|
||||
fontSize: clideFontCaption,
|
||||
),
|
||||
child: ClideText(c.error!, color: tokens.statusError, fontSize: clideFontCaption),
|
||||
),
|
||||
if (c.loading)
|
||||
const Padding(
|
||||
padding: EdgeInsets.all(12),
|
||||
child: ClideText('Loading…', muted: true),
|
||||
),
|
||||
_LinkGroup(
|
||||
label: 'Backlinks',
|
||||
links: c.backlinks,
|
||||
pathKey: 'source',
|
||||
),
|
||||
_LinkGroup(
|
||||
label: 'Outlinks',
|
||||
links: c.outlinks,
|
||||
pathKey: 'target',
|
||||
),
|
||||
if (c.loading) const Padding(padding: EdgeInsets.all(12), child: ClideText('Loading…', muted: true)),
|
||||
_LinkGroup(label: 'Backlinks', links: c.backlinks, pathKey: 'source'),
|
||||
_LinkGroup(label: 'Outlinks', links: c.outlinks, pathKey: 'target'),
|
||||
],
|
||||
),
|
||||
),
|
||||
@@ -101,11 +76,7 @@ class _BacklinksViewState extends State<BacklinksView> {
|
||||
}
|
||||
|
||||
class _LinkGroup extends StatelessWidget {
|
||||
const _LinkGroup({
|
||||
required this.label,
|
||||
required this.links,
|
||||
required this.pathKey,
|
||||
});
|
||||
const _LinkGroup({required this.label, required this.links, required this.pathKey});
|
||||
|
||||
final String label;
|
||||
final List<Map<String, Object?>> links;
|
||||
@@ -119,11 +90,7 @@ class _LinkGroup extends StatelessWidget {
|
||||
children: [
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(left: 12, right: 8, top: 8, bottom: 2),
|
||||
child: ClideText(
|
||||
'$label (${links.length})',
|
||||
fontSize: clideFontCaption,
|
||||
muted: true,
|
||||
),
|
||||
child: ClideText('$label (${links.length})', fontSize: clideFontCaption, muted: true),
|
||||
),
|
||||
if (links.isEmpty)
|
||||
const Padding(
|
||||
|
||||
@@ -17,13 +17,13 @@ class PqlExtension extends ClideExtension {
|
||||
// tab (T-201); this extension keeps only the Backlinks context panel.
|
||||
@override
|
||||
List<ContributionPoint> get contributions => [
|
||||
TabContribution(
|
||||
id: 'pql.backlinks',
|
||||
slot: Slots.contextPanel,
|
||||
title: 'Links',
|
||||
icon: PhosphorIcons.byName('link'),
|
||||
priority: -80,
|
||||
build: (_) => const BacklinksView(),
|
||||
),
|
||||
];
|
||||
TabContribution(
|
||||
id: 'pql.backlinks',
|
||||
slot: Slots.contextPanel,
|
||||
title: 'Links',
|
||||
icon: PhosphorIcons.byName('link'),
|
||||
priority: -80,
|
||||
build: (_) => const BacklinksView(),
|
||||
),
|
||||
];
|
||||
}
|
||||
|
||||
@@ -71,10 +71,7 @@ class PqlController extends ChangeNotifier {
|
||||
_error = null;
|
||||
notifyListeners();
|
||||
|
||||
final r = await ipc.request('pql.search', args: {
|
||||
'terms': terms,
|
||||
'limit': 50,
|
||||
});
|
||||
final r = await ipc.request('pql.search', args: {'terms': terms, 'limit': 50});
|
||||
|
||||
_loading = false;
|
||||
if (!r.ok) {
|
||||
@@ -91,10 +88,7 @@ class PqlController extends ChangeNotifier {
|
||||
_loading = true;
|
||||
notifyListeners();
|
||||
|
||||
final r = await ipc.request('pql.files', args: {
|
||||
'glob': glob ?? '**/*.md',
|
||||
'limit': 200,
|
||||
});
|
||||
final r = await ipc.request('pql.files', args: {'glob': glob ?? '**/*.md', 'limit': 200});
|
||||
|
||||
_loading = false;
|
||||
if (!r.ok) {
|
||||
@@ -113,10 +107,7 @@ class PqlController extends ChangeNotifier {
|
||||
_error = null;
|
||||
notifyListeners();
|
||||
|
||||
final r = await ipc.request('pql.query', args: {
|
||||
'query': dsl,
|
||||
'limit': 200,
|
||||
});
|
||||
final r = await ipc.request('pql.query', args: {'query': dsl, 'limit': 200});
|
||||
|
||||
_loading = false;
|
||||
if (!r.ok) {
|
||||
|
||||
@@ -59,8 +59,8 @@ class _PqlSearchBodyState extends State<PqlSearchBody> {
|
||||
.on<DaemonEvent>()
|
||||
.where((e) => e.subsystem == 'files' && e.kind == 'files.changed' && (e.data['path'] as String? ?? '').endsWith('.md'))
|
||||
.listen((_) {
|
||||
if (widget.controller.view == PqlView.markdown) unawaited(widget.controller.loadMarkdownFiles());
|
||||
});
|
||||
if (widget.controller.view == PqlView.markdown) unawaited(widget.controller.loadMarkdownFiles());
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -187,10 +187,7 @@ class _SearchResultRow extends StatelessWidget {
|
||||
},
|
||||
builder: (context, hovered, _) => Container(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 6),
|
||||
decoration: BoxDecoration(
|
||||
color: hovered ? tokens.sidebarItemHover : null,
|
||||
borderRadius: BorderRadius.circular(4),
|
||||
),
|
||||
decoration: BoxDecoration(color: hovered ? tokens.sidebarItemHover : null, borderRadius: BorderRadius.circular(4)),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
@@ -259,13 +256,7 @@ class _FileRow extends StatelessWidget {
|
||||
borderRadius: BorderRadius.circular(4),
|
||||
border: focused ? Border.all(color: tokens.globalFocus, width: 1) : null,
|
||||
),
|
||||
child: ClideText(
|
||||
path,
|
||||
maxLines: 1,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
fontSize: clideFontCaption,
|
||||
color: tokens.sidebarForeground,
|
||||
),
|
||||
child: ClideText(path, maxLines: 1, overflow: TextOverflow.ellipsis, fontSize: clideFontCaption, color: tokens.sidebarForeground),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user