Skip to content

Conversation

@nate-thegrate
Copy link
Contributor

This pull request adds a type interface and removes // ignore comments from tests.


@visibleForTesting
extension type TappableLabel(_TappableLabel _label) {}



Before

final CustomPaint dialPaint = tester.widget(findDialPaint);
final dynamic dialPainter = dialPaint.painter;
// ignore: avoid_dynamic_calls
final List<dynamic> primaryLabels = dialPainter.primaryLabels as List<dynamic>;
// ignore: avoid_dynamic_calls
expect(primaryLabels.map<String>((dynamic tp) => tp.painter.text.text as String), labels12To11);

// ignore: avoid_dynamic_calls
final List<dynamic> selectedLabels = dialPainter.selectedLabels as List<dynamic>;
// ignore: avoid_dynamic_calls
expect(selectedLabels.map<String>((dynamic tp) => tp.painter.text.text as String), labels12To11);

After

final List<TappableLabel> primary, selected;
(:primary, :selected) = TappableLabel.labels(tester.widget(findDialPaint));

expect(primary.map<String?>((TappableLabel tp) => tp.textSpan?.text), labels12To11);
expect(selected.map<String?>((TappableLabel tp) => tp.textSpan?.text), labels12To11);

@github-actions github-actions bot added framework flutter/packages/flutter repository. See also f: labels. f: material design flutter/packages/flutter/material repository. labels Nov 11, 2024
@Piinks
Copy link
Contributor

Piinks commented Nov 13, 2024

This is pending #158466

@nate-thegrate nate-thegrate marked this pull request as draft November 14, 2024 01:31
Comment on lines -615 to +600
final CustomPaint dialPaint = tester.widget(findDialPaint);
final dynamic dialPainter = dialPaint.painter;
// ignore: avoid_dynamic_calls
final List<dynamic> primaryLabels = dialPainter.primaryLabels as List<dynamic>;
expect(
// ignore: avoid_dynamic_calls
primaryLabels.map<String>((dynamic tp) => tp.painter.text.text as String),
labels12To11,
);
final List<TappableLabel> primary, selected;
(:primary, :selected) = TappableLabel.labels(tester.widget(findDialPaint));

// ignore: avoid_dynamic_calls
final List<dynamic> selectedLabels = dialPainter.selectedLabels as List<dynamic>;
expect(
// ignore: avoid_dynamic_calls
selectedLabels.map<String>((dynamic tp) => tp.painter.text.text as String),
labels12To11,
);
expect(primary.map<String?>((TappableLabel tp) => tp.textSpan?.text), labels12To11);
expect(selected.map<String?>((TappableLabel tp) => tp.textSpan?.text), labels12To11);
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Even if we don't land this, it was still fun to do 🙂

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

f: material design flutter/packages/flutter/material repository. framework flutter/packages/flutter repository. See also f: labels.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants