From ab34394109cbe39dde430a86f279173e30881027 Mon Sep 17 00:00:00 2001 From: wangjia <809946525@qq.com> Date: Wed, 24 Jun 2026 21:44:03 +0800 Subject: [PATCH] =?UTF-8?q?feat(client):=20context.tokens=20=E5=8F=96?= =?UTF-8?q?=E8=89=B2=E6=89=A9=E5=B1=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 --- client/lib/core/theme/context_tokens.dart | 6 ++++++ client/test/theme/context_tokens_test.dart | 15 +++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 client/lib/core/theme/context_tokens.dart create mode 100644 client/test/theme/context_tokens_test.dart diff --git a/client/lib/core/theme/context_tokens.dart b/client/lib/core/theme/context_tokens.dart new file mode 100644 index 0000000..18ee53f --- /dev/null +++ b/client/lib/core/theme/context_tokens.dart @@ -0,0 +1,6 @@ +import 'package:flutter/material.dart'; +import 'app_tokens.dart'; + +extension TokensX on BuildContext { + AppTokens get tokens => Theme.of(this).extension()!; +} diff --git a/client/test/theme/context_tokens_test.dart b/client/test/theme/context_tokens_test.dart new file mode 100644 index 0000000..ad39688 --- /dev/null +++ b/client/test/theme/context_tokens_test.dart @@ -0,0 +1,15 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:jiu_client/core/theme/context_tokens.dart'; +import 'package:jiu_client/core/theme/themes.dart'; + +void main() { + testWidgets('context.tokens 取到当前主题色', (tester) async { + late Color seen; + await tester.pumpWidget(MaterialApp( + theme: buildTheme('a'), + home: Builder(builder: (ctx) { seen = ctx.tokens.primary; return const SizedBox(); }), + )); + expect(seen, const Color(0xFF2563AC)); + }); +}