From 453e106cd515c95adcd531add6ed451cf0366ee0 Mon Sep 17 00:00:00 2001 From: marco Date: Fri, 12 Jun 2026 12:22:46 +0200 Subject: [PATCH] added controller scope and extension for context --- lib/model/extensions/controller_context.dart | 9 +++++++++ lib/service/controller_scope.dart | 18 ++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 lib/model/extensions/controller_context.dart create mode 100644 lib/service/controller_scope.dart diff --git a/lib/model/extensions/controller_context.dart b/lib/model/extensions/controller_context.dart new file mode 100644 index 0000000..abd0089 --- /dev/null +++ b/lib/model/extensions/controller_context.dart @@ -0,0 +1,9 @@ +import 'package:flutter/material.dart'; + +import '../../service/controller_scope.dart'; + +extension ControllerContext on BuildContext { + T controller() { + return ControllerScope.of(this); + } +} diff --git a/lib/service/controller_scope.dart b/lib/service/controller_scope.dart new file mode 100644 index 0000000..8aac810 --- /dev/null +++ b/lib/service/controller_scope.dart @@ -0,0 +1,18 @@ +import 'package:flutter/widgets.dart'; + +class ControllerScope extends InheritedNotifier { + const ControllerScope({ + super.key, + required T controller, + required super.child, + }) : super(notifier: controller); + + static T of(BuildContext context) { + final scope = context + .dependOnInheritedWidgetOfExactType>(); + + assert(scope != null, 'No ControllerScope<$T> found in context'); + + return scope!.notifier!; + } +}