CherryPick Flutter

cherrypick_flutter is a Flutter library that allows access to the root scope through the context using CherryPickProvider. This package is designed to provide a simple and convenient way to interact with the root scope within the widget tree.

Installation

Add cherrypick_flutter to your pubspec.yaml:

dependencies:
  cherrypick_flutter: ^1.0.0

Then run flutter pub get to install the package.

Usage

Importing the Package

To start using cherrypick_flutter, import it into your Dart code:

import 'package:cherrypick_flutter/cherrypick_flutter.dart';

Providing State with CherryPickProvider

Use CherryPickProvider to wrap the part of the widget tree that requires access to the provided state.

import 'package:flutter/material.dart';
import 'package:cherrypick_flutter/cherrypick_flutter.dart';

void main() {
  runApp(
    CherryPickProvider(
      rootScope: yourRootScopeInstance,
      child: MyApp(),
    ),
  );
}

Accessing State

To access the state provided by CherryPickProvider, use the of method. This is typically done in the build method of your widgets.

class MyWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final rootScope = CherryPickProvider.of(context).rootScope;

    return Text('Current state: ${rootScope.someStateValue}');
  }
}

Updating State

The CherryPickProvider will automatically update its dependents when its state changes. Ensure to override the updateShouldNotify method to specify when notifications should occur, as shown in the provided implementation.

Example

Here is a simple example showing how to implement and use the CherryPickProvider.

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    final rootScope = CherryPickProvider.of(context).rootScope;

    return MaterialApp.router(
      routerDelegate: rootScope.resolve<AppRouter>().delegate(),
      routeInformationParser:
          rootScope.resolve<AppRouter>().defaultRouteParser(),
    );
  }
}

Contributing

We welcome contributions from the community. Please open issues and pull requests if you have ideas for improvements.

License

This project is licensed under the Apache License 2.0.

Libraries

cherrypick_flutter
Copyright 2021 Sergey Penkovsky sergey.penkovsky@gmail.com 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.