// 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 酒窖酒红 }); }