82d1e860a7
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
31 lines
1.3 KiB
Dart
31 lines
1.3 KiB
Dart
// client/test/theme/theme_switch_widget_test.dart
|
|
import 'package:flutter/material.dart';
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|
import 'package:shared_preferences/shared_preferences.dart';
|
|
import 'package:jiu_client/core/theme/context_tokens.dart';
|
|
import 'package:jiu_client/core/theme/themes.dart';
|
|
import 'package:jiu_client/core/theme/theme_controller.dart';
|
|
|
|
// 复刻 main.dart 的主题接线最小骨架,验证切 key → 主题色变化。
|
|
void main() {
|
|
setUp(() => SharedPreferences.setMockInitialValues({}));
|
|
|
|
testWidgets('切换 themeController 改变 context.tokens.primary', (tester) async {
|
|
late WidgetRef capturedRef;
|
|
late Color seen;
|
|
await tester.pumpWidget(ProviderScope(child: Consumer(builder: (ctx, ref, _) {
|
|
capturedRef = ref;
|
|
final key = ref.watch(themeControllerProvider);
|
|
return MaterialApp(
|
|
theme: buildTheme(key),
|
|
home: Builder(builder: (c) { seen = c.tokens.primary; return const SizedBox(); }),
|
|
);
|
|
})));
|
|
expect(seen, const Color(0xFF2563AC)); // a
|
|
await capturedRef.read(themeControllerProvider.notifier).set('c');
|
|
await tester.pumpAndSettle();
|
|
expect(seen, const Color(0xFF7C1F2C)); // c 酒窖酒红
|
|
});
|
|
}
|