From 0daa689c01344070a230805d5a7563c8207f1648 Mon Sep 17 00:00:00 2001 From: Vadim Date: Wed, 31 May 2023 11:01:41 +0200 Subject: [PATCH] fixed `MeteringScreenLayout` --- .../metering_screen_layout_provider.dart | 29 ++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/lib/providers/metering_screen_layout_provider.dart b/lib/providers/metering_screen_layout_provider.dart index fe3d80c..965b275 100644 --- a/lib/providers/metering_screen_layout_provider.dart +++ b/lib/providers/metering_screen_layout_provider.dart @@ -3,7 +3,34 @@ import 'package:lightmeter/data/models/metering_screen_layout_config.dart'; import 'package:lightmeter/data/shared_prefs_service.dart'; import 'package:lightmeter/utils/inherited_generics.dart'; -typedef MeteringScreenLayout = InheritedModelBase; +class MeteringScreenLayout extends InheritedModelBase { + const MeteringScreenLayout({ + required super.data, + required super.child, + super.key, + }); + + static MeteringScreenLayoutConfig of(BuildContext context, {bool listen = true}) { + if (listen) { + return context + .dependOnInheritedWidgetOfExactType< + InheritedModelBase>()! + .data; + } else { + return context + .findAncestorWidgetOfExactType>()! + .data; + } + } + + static bool featureOf(BuildContext context, MeteringScreenLayoutFeature aspect) { + return InheritedModel.inheritFrom>( + context, + aspect: aspect, + )! + .data[aspect]!; + } +} class MeteringScreenLayoutProvider extends StatefulWidget { final Widget child;