Prepare 0.7.9 with decisive Dock tap transitions

This commit is contained in:
david1465833828
2026-10-28 19:37:04 +08:00
parent 23c1a58ca3
commit 8713bce0ee
9 changed files with 85 additions and 9 deletions
+26
View File
@@ -1,6 +1,7 @@
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:hepan_everyday/widgets/glass_dock.dart';
import 'package:hepan_everyday/widgets/tab_deck.dart';
import 'package:hepan_everyday/app/hepan_app.dart';
import 'package:hepan_everyday/features/timetable/timetable_page.dart';
import 'package:timezone/data/latest.dart' as tzdata;
@@ -9,6 +10,31 @@ import 'navigation_test.dart' show uiController;
void main() {
setUpAll(tzdata.initializeTimeZones);
testWidgets(
'tab content finishes within one frame of 240ms and retains page state',
(tester) async {
Widget deck(int index) => MaterialApp(
home: Scaffold(
body: TabDeck(
index: index,
children: const [TextField(), Text('新页面')],
),
),
);
await tester.pumpWidget(deck(0));
await tester.enterText(find.byType(TextField), '保留内容');
FocusManager.instance.primaryFocus?.unfocus();
await tester.pumpWidget(deck(1));
await tester.pump(); // Start the transition clock before advancing it.
await tester.pump(const Duration(milliseconds: 240));
await tester.pump(const Duration(milliseconds: 16));
expect(find.byType(TextField), findsNothing);
expect(find.text('新页面'), findsOneWidget);
await tester.pumpWidget(deck(0));
await tester.pumpAndSettle();
expect(find.text('保留内容'), findsOneWidget);
},
);
testWidgets('only the selected tab is blue, including during glass travel', (
tester,
) async {