style(theme): 客户端切换深色视觉风格
This commit is contained in:
1 parent
295c21513c
commit
4bc04fd8ae
75 files changed
+732
-330
No files matched your search
@@ -0,0 +1,117 @@
|
||||
// Author: fruit.com.cn
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:fruitshorts/core/data/remote/api_client.dart';
|
||||
import 'package:fruitshorts/core/data/remote/auth_api.dart';
|
||||
import 'package:fruitshorts/core/data/services/auth_controller.dart';
|
||||
import 'package:fruitshorts/core/data/services/auth_session_store.dart';
|
||||
import 'package:fruitshorts/core/theme/app_colors.dart';
|
||||
import 'package:fruitshorts/core/theme/app_theme.dart';
|
||||
import 'package:fruitshorts/l10n/app_localizations.dart';
|
||||
import 'package:fruitshorts/pages/watch_records/watch_records_page.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:shared_preferences_platform_interface/in_memory_shared_preferences_async.dart';
|
||||
import 'package:shared_preferences_platform_interface/shared_preferences_async_platform_interface.dart';
|
||||
|
||||
import '../support/fake_http_adapter.dart';
|
||||
|
||||
void main() {
|
||||
setUp(() {
|
||||
SharedPreferencesAsyncPlatform.instance =
|
||||
InMemorySharedPreferencesAsync.empty();
|
||||
});
|
||||
|
||||
testWidgets('should_render_material_app_with_dark_default_theme', (
|
||||
tester,
|
||||
) async {
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
theme: AppTheme.dark(),
|
||||
darkTheme: AppTheme.dark(),
|
||||
themeMode: ThemeMode.dark,
|
||||
locale: const Locale('en'),
|
||||
localizationsDelegates: AppLocalizations.localizationsDelegates,
|
||||
supportedLocales: AppLocalizations.supportedLocales,
|
||||
home: Scaffold(
|
||||
key: const Key('dark-smoke-scaffold'),
|
||||
appBar: AppBar(title: const Text('Dark')),
|
||||
body: Card(
|
||||
key: const Key('dark-smoke-card'),
|
||||
child: ListTile(
|
||||
title: Text(
|
||||
'Primary',
|
||||
style: TextStyle(color: AppColors.onSurface),
|
||||
),
|
||||
subtitle: Text('Muted', style: TextStyle(color: AppColors.muted)),
|
||||
trailing: Text('128', style: TextStyle(color: AppColors.gold)),
|
||||
),
|
||||
),
|
||||
bottomNavigationBar: NavigationBar(
|
||||
selectedIndex: 0,
|
||||
destinations: const [
|
||||
NavigationDestination(icon: Icon(Icons.home), label: 'Home'),
|
||||
NavigationDestination(icon: Icon(Icons.person), label: 'Mine'),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
final context = tester.element(
|
||||
find.byKey(const Key('dark-smoke-scaffold')),
|
||||
);
|
||||
final theme = Theme.of(context);
|
||||
expect(theme.brightness, Brightness.dark);
|
||||
expect(theme.scaffoldBackgroundColor, AppColors.ink);
|
||||
expect(theme.appBarTheme.backgroundColor, AppColors.card);
|
||||
expect(theme.cardTheme.color, AppColors.card);
|
||||
|
||||
final card = tester.widget<Card>(find.byKey(const Key('dark-smoke-card')));
|
||||
expect(card.color ?? theme.cardTheme.color, AppColors.card);
|
||||
expect(find.text('Primary'), findsOneWidget);
|
||||
expect(find.text('Muted'), findsOneWidget);
|
||||
expect(find.text('128'), findsOneWidget);
|
||||
});
|
||||
|
||||
testWidgets('should_render_watch_records_page_on_dark_surface', (
|
||||
tester,
|
||||
) async {
|
||||
final auth = AuthController(
|
||||
AuthApi(
|
||||
ApiClient(
|
||||
baseUrl: 'http://127.0.0.1:1',
|
||||
adapter: FakeHttpAdapter(
|
||||
(_) async =>
|
||||
FakeHttpResponse('{"code":0,"message":"ok","data":null}'),
|
||||
),
|
||||
),
|
||||
),
|
||||
AuthSessionStore(),
|
||||
);
|
||||
|
||||
await tester.pumpWidget(
|
||||
ChangeNotifierProvider<AuthController>.value(
|
||||
value: auth,
|
||||
child: MaterialApp(
|
||||
theme: AppTheme.dark(),
|
||||
darkTheme: AppTheme.dark(),
|
||||
themeMode: ThemeMode.dark,
|
||||
locale: const Locale('en'),
|
||||
localizationsDelegates: AppLocalizations.localizationsDelegates,
|
||||
supportedLocales: AppLocalizations.supportedLocales,
|
||||
home: const WatchRecordsPage(),
|
||||
),
|
||||
),
|
||||
);
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
final scaffold = tester.widget<Scaffold>(
|
||||
find.byKey(const Key('watch-records-page')),
|
||||
);
|
||||
expect(scaffold.backgroundColor, AppColors.ink);
|
||||
expect(find.byKey(const Key('auth-gate-panel')), findsOneWidget);
|
||||
expect(find.byType(Scaffold), findsOneWidget);
|
||||
});
|
||||
}
|
||||
Reference in new issue
Block a user