provider_kit 0.2.0 copy "provider_kit: ^0.2.0" to clipboard
provider_kit: ^0.2.0 copied to clipboard

A tool kit for provider package with predefined builders, listeners, caches, observers and much more with reduced boilerplate.

example/lib/main.dart

// ignore_for_file: unused_import
import 'package:example/example_kits/0_single_state/0_state_listener.dart';
import 'package:example/example_kits/0_single_state/1_state_builder.dart';
import 'package:example/example_kits/0_single_state/2_state_consumer.dart';
import 'package:example/example_kits/0_single_state/3_view_state_listener.dart';
import 'package:example/example_kits/0_single_state/4_view_state_builder.dart';
import 'package:example/example_kits/0_single_state/5_view_state_consumer.dart';
import 'package:example/example_kits/1_multi_state/10_multi_view_state_builder.dart';
import 'package:example/example_kits/1_multi_state/11_multi_view_state_consumer.dart';
import 'package:example/example_kits/1_multi_state/6_multi_state_listener.dart';
import 'package:example/example_kits/1_multi_state/7_multi_state_builder.dart';
import 'package:example/example_kits/1_multi_state/8_multi_state_consumer.dart';
import 'package:example/example_kits/1_multi_state/9_multi_view_state_listener.dart';
import 'package:example/example_kits/observer/notifier_observer.dart';
import 'package:example/states_widget/empty_state_widget.dart';
import 'package:example/states_widget/error_state_widget.dart';
import 'package:example/states_widget/initial_state_widget.dart';
import 'package:example/states_widget/loading_state_widget.dart';
import 'package:flutter/material.dart';
import 'package:provider_kit/provider_kit.dart';

void main() {
  NotifierBase.observer = NotifierLogger();
  runApp(const MyApp());
}

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

  @override
  Widget build(BuildContext context) {
    return ViewStateWidgetsProvider(
      initialStateBuilder: (isSliver) => InitialStateWidget(
        isSliver: isSliver,
      ),
      emptyStateBuilder: (message, isSliver) =>
          EmptyStateWidget(isSliver: isSliver),
      errorStateBuilder: (error, onRetry, exception, stackTrace, isSliver) =>
          ErrorStateWidget(
              text: error ?? "something went wrong",
              onTap: onRetry,
              isSliver: isSliver),
      loadingStateBuilder: (message, progress, isSliver) =>
          LoadingStateWidget(isSliver: isSliver),
      child: MaterialApp(
        title: 'Provider Kit Widgets Demo',
        theme: ThemeData(
          colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
          useMaterial3: true,
        ),
        home: const ExamplePickerScreen(),
      ),
    );
  }
}

class ExampleItem {
  final String title;
  final String category;
  final Widget widget;

  const ExampleItem({
    required this.title,
    required this.category,
    required this.widget,
  });
}

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

  // Map out all your examples in one clean list
  static final List<ExampleItem> examples = [
    // --- Single State ---
    const ExampleItem(
      title: '0. State Listener',
      category: 'Single State',
      widget: StateListenerExample(),
    ),
    const ExampleItem(
      title: '1. State Builder',
      category: 'Single State',
      widget: StateBuilderExample(),
    ),
    const ExampleItem(
      title: '2. State Consumer',
      category: 'Single State',
      widget: StateConsumerExample(),
    ),
    const ExampleItem(
      title: '3. View State Listener',
      category: 'Single State',
      widget: ViewStateListenerExample(),
    ),
    const ExampleItem(
      title: '4. View State Builder',
      category: 'Single State',
      widget: ViewStateBuilderExample(),
    ),
    const ExampleItem(
      title: '5. View State Consumer',
      category: 'Single State',
      widget: ViewStateConsumerExample(),
    ),

    // --- Multi State ---
    const ExampleItem(
      title: '6. Multi State Listener',
      category: 'Multi State',
      widget: MultiStateListenerExample(),
    ),
    const ExampleItem(
      title: '7. Multi State Builder',
      category: 'Multi State',
      widget: MultiStateBuilderExample(),
    ),
    const ExampleItem(
      title: '8. Multi State Consumer',
      category: 'Multi State',
      widget: MultiStateConsumerExample(),
    ),
    const ExampleItem(
      title: '9. Multi View State Listener',
      category: 'Multi State',
      widget: MultiViewStateListenerExample(),
    ),
    const ExampleItem(
      title: '10. Multi View State Builder',
      category: 'Multi State',
      widget: MultiViewStateBuilderExample(),
    ),
    const ExampleItem(
      title: '11. Multi View State Consumer',
      category: 'Multi State',
      widget: MultiViewStateConsumerExample(),
    ),
  ];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Provider Kit Demos'),
        centerTitle: true,
      ),
      body: ListView.separated(
        itemCount: examples.length,
        separatorBuilder: (_, __) => const Divider(height: 1),
        itemBuilder: (context, index) {
          final example = examples[index];
          return ListTile(
            title: Text(
              example.title,
              style: const TextStyle(fontWeight: FontWeight.w600),
            ),
            subtitle: Text(example.category),
            trailing: const Icon(Icons.arrow_forward_ios, size: 16),
            onTap: () {
              Navigator.push(
                context,
                MaterialPageRoute(
                  builder: (_) => example.widget,
                ),
              );
            },
          );
        },
      ),
    );
  }
}
6
likes
160
points
243
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

A tool kit for provider package with predefined builders, listeners, caches, observers and much more with reduced boilerplate.

Repository (GitHub)
View/report issues

License

BSD-2-Clause (license)

Dependencies

collection, flutter, nested, provider

More

Packages that depend on provider_kit