2025-05-02 11:42:32 +03:00
|
|
|
import 'package:cherrypick/cherrypick.dart';
|
|
|
|
|
import 'package:flutter/widgets.dart';
|
|
|
|
|
|
2025-05-02 11:53:03 +03:00
|
|
|
///
|
2025-05-16 13:06:46 +03:00
|
|
|
/// Copyright 2021 Sergey Penkovsky (sergey.penkovsky@gmail.com)
|
2025-05-02 11:53:03 +03:00
|
|
|
/// Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
|
/// you may not use this file except in compliance with the License.
|
|
|
|
|
/// You may obtain a copy of the License at
|
|
|
|
|
/// http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
|
/// Unless required by applicable law or agreed to in writing, software
|
|
|
|
|
/// distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
|
/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
|
/// See the License for the specific language governing permissions and
|
|
|
|
|
/// limitations under the License.
|
|
|
|
|
///
|
|
|
|
|
|
2025-05-03 17:02:13 +03:00
|
|
|
final class CherryPickProvider extends InheritedWidget {
|
|
|
|
|
Scope openRootScope() => CherryPick.openRootScope();
|
|
|
|
|
|
|
|
|
|
Scope openSubScope({String scopeName = '', String separator = '.'}) =>
|
|
|
|
|
CherryPick.openScope(scopeName: scopeName, separator: separator);
|
2025-05-02 11:42:32 +03:00
|
|
|
|
|
|
|
|
// Constructor for CherryPickProvider. Initializes with a required rootScope and child widget.
|
|
|
|
|
const CherryPickProvider({
|
|
|
|
|
super.key,
|
|
|
|
|
required super.child,
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// Method to access the nearest CherryPickProvider instance from the context
|
|
|
|
|
static CherryPickProvider of(BuildContext context) {
|
|
|
|
|
// Looks up the widget tree for an instance of CherryPickProvider
|
|
|
|
|
final CherryPickProvider? result =
|
|
|
|
|
context.dependOnInheritedWidgetOfExactType<CherryPickProvider>();
|
|
|
|
|
// Assert to ensure a CherryPickProvider is present in the context
|
|
|
|
|
assert(result != null, 'No CherryPickProvider found in context');
|
|
|
|
|
return result!;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Determines whether the widget should notify dependents when it changes
|
|
|
|
|
@override
|
|
|
|
|
bool updateShouldNotify(CherryPickProvider oldWidget) {
|
2025-05-03 17:02:13 +03:00
|
|
|
return false;
|
2025-05-02 11:42:32 +03:00
|
|
|
}
|
|
|
|
|
}
|