feat(flutter): 增加关键操作震动反馈

This commit is contained in:
Zhou Weidong committed 2026-10-17 16:15:46 +08:00
1 parent e609e3ad8d
commit 8a481d5c62
20 files changed
+308 -72

No files matched your search

+25 -2
View File
@@ -12,6 +12,7 @@ import 'package:shared_preferences_platform_interface/shared_preferences_async_p
import '../support/fake_catalog.dart';
import '../support/fake_category.dart';
import '../support/fake_haptics.dart';
import '../support/fake_interaction_repositories.dart';
import '../support/widget_player.dart';
@@ -36,7 +37,9 @@ void main() {
testWidgets('should_theme_four_tabs_and_switch_selected_state_when_tapped', (
tester,
) async {
await _pumpApp(tester);
final haptics = FakeHaptics();
await _pumpApp(tester, haptics);
haptics.reset();
for (final key in _keys) {
expect(find.byKey(key), findsOneWidget);
@@ -73,6 +76,10 @@ void main() {
await tester.tap(find.byKey(const Key('tab-discover')));
await tester.pumpAndSettle();
expect(haptics.selectionClicks, 1);
await tester.tap(find.byKey(const Key('tab-discover')));
await tester.pumpAndSettle();
expect(haptics.selectionClicks, 1);
expect(
find.descendant(
of: find.byKey(const Key('tab-discover')),
@@ -100,9 +107,24 @@ void main() {
expect(find.byKey(key), findsNothing);
}
});
testWidgets('should_not_haptic_when_ordinary_list_item_is_opened', (
tester,
) async {
final haptics = FakeHaptics();
await _pumpApp(tester, haptics);
await tester.tap(find.byKey(const Key('tab-my')));
await tester.pumpAndSettle();
haptics.reset();
await tester.tap(find.text('App Language'));
await tester.pumpAndSettle();
expect(haptics.calls, isEmpty);
});
}
Future<void> _pumpApp(WidgetTester tester) async {
Future<void> _pumpApp(WidgetTester tester, [FakeHaptics? haptics]) async {
tester.view.physicalSize = const Size(390, 844);
tester.view.devicePixelRatio = 1;
addTearDown(tester.view.resetPhysicalSize);
@@ -118,6 +140,7 @@ Future<void> _pumpApp(WidgetTester tester) async {
playbackRepository: FakePlaybackRepository(),
commentRepository: FakeCommentRepository(),
interactionRepository: FakeInteractionRepository(),
haptics: haptics ?? FakeHaptics(),
),
);
await tester.pumpAndSettle();