From b4c9e51a88ad1e914854fb7bad883a19f700cd34 Mon Sep 17 00:00:00 2001 From: Adonis Date: Thu, 20 Aug 2026 05:01:20 +0100 Subject: [PATCH] feat(dievas): add context.animation getter for theme parity --- .../lib/src/extensions/dievas_theme_context_extension.dart | 5 ++++- packages/dievas/test/theme/dievas_theme_test.dart | 7 +++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/dievas/lib/src/extensions/dievas_theme_context_extension.dart b/packages/dievas/lib/src/extensions/dievas_theme_context_extension.dart index fe38d3f..269b905 100644 --- a/packages/dievas/lib/src/extensions/dievas_theme_context_extension.dart +++ b/packages/dievas/lib/src/extensions/dievas_theme_context_extension.dart @@ -9,7 +9,7 @@ import 'package:dievas/src/theme.dart'; /// /// Usage inside a widget's [build] method: /// ```dart -/// final color = context.colours.action.actionPrimary; +/// final colour = context.colours.action.actionPrimary; /// final style = context.typography.labelMd; /// final gap = context.spacing.md; /// ``` @@ -35,6 +35,9 @@ extension DievasThemeContextExtension on BuildContext { /// The opacity sub-system — fractional opacity values. DievasOpacityThemeData get opacity => DievasTheme.opacityOf(this); + /// The animation sub-system — motion durations and easing curves. + DievasAnimationThemeData get animation => DievasTheme.animationOf(this); + /// The component-level theme data sub-system. DievasComponentThemeData get components => DievasTheme.componentsOf(this); diff --git a/packages/dievas/test/theme/dievas_theme_test.dart b/packages/dievas/test/theme/dievas_theme_test.dart index bff73d6..075cc1e 100644 --- a/packages/dievas/test/theme/dievas_theme_test.dart +++ b/packages/dievas/test/theme/dievas_theme_test.dart @@ -209,6 +209,13 @@ void main() { expect(DievasTheme.componentsOf(ctx), isA()); }); + testWidgets('context.animation returns animation theme', (tester) async { + await tester.pumpWidget(const Harness(child: SizedBox(key: childKey))); + final ctx = tester.element(find.byKey(childKey)); + expect(ctx.animation, isA()); + expect(ctx.animation, same(DievasTheme.animationOf(ctx))); + }); + testWidgets('typographyOf returns typography theme', (tester) async { await tester.pumpWidget(const Harness(child: SizedBox(key: childKey))); final ctx = tester.element(find.byKey(childKey));