Sampod

Overview

Sampod is a lightweight state management solution for Flutter. It simplifies state management by using a streamlined API and easy-to-understand approach. Sampod is designed to enhance Flutter applications by providing a more efficient way to manage state across your widgets.

Features

Simple State Management: Easily manage state using Sampod controllers. Efficient State Updates: Quickly update and reflect changes in the UI. Integration: Seamlessly integrates with Flutter's existing widgets and state management techniques.

Getting Started

To get started with Sampod, follow these steps:

Add Dependency:

Copy code

dependencies:
  sampod: ^0.0.8

Copy code

import 'package:sampod/sampod.dart';
import 'package:sampod/sampod_builder.dart';
import 'package:sampod/sampod_provider.dart';
// Setup Your App:
// Use SampodProvider and SampodBuilder to manage and update state in your  Flutter application.
void main() {
  runApp(const MyApp());
}

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Sampod',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const MyWidget(),
    );
  }
}

class MyWidget extends StatefulWidget {
  const MyWidget({super.key});

  @override
  State<MyWidget> createState() => _MyWidgetState();
}

class _MyWidgetState extends State<MyWidget> {
  final SliderSampod sliderSampod = SliderSampod();
  final OpacitySampod opacitySampod = OpacitySampod();

  @override
  Widget build(BuildContext context) {
    return SampodProvider(
      controller: sliderSampod,
      builder: (context, sliderSampod) {
        return SampodProvider(
          controller: opacitySampod,
          builder: (context, opacitySampod) {
            return Scaffold(
              body: Column(
                children: [
                  Text((Random().nextDouble().toString())),
                  const SizedBox(height: 100),
                  SampodBuilder<SliderSampod>(
                    builder: (context, sliderSampod) {
                      return Slider(
                        value: sliderSampod.slider,
                        onChanged: (value) {
                          SampodProvider.of<SliderSampod>(context)
                              .slidetChange(value);
                          SampodProvider.of<OpacitySampod>(context)
                              .slidetChange(value);
                        },
                      );
                    },
                  ),
                  Opacity(
                    opacity: opacitySampod.opacity,
                    child: Container(
                      width: double.infinity,
                      height: 200,
                      color: const Color.fromARGB(255, 0, 187, 187),
                    ),
                  ),
                  const NewWidget(),
                ],
              ),
            );
          },
        );
      },
    );
  }
}

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

  @override
  Widget build(BuildContext context) {
    return SampodBuilder<OpacitySampod>(
      builder: (context, opacitySampod) {
        return Opacity(
          opacity: opacitySampod.opacity,
          child: Container(
            width: double.infinity,
            height: 200,
            color: Colors.green,
          ),
        );
      },
    );
  }
}

class SliderSampod extends Sampod {
  double slider = 0;

  void slidetChange(double value) {
    slider = value;
    notifyListeners();
  }
}

class OpacitySampod extends Sampod {
  double opacity = 0;

  void slidetChange(double value) {
    opacity = value;
    notifyListeners();
  }
}

#API Documentation

Sampod:

Base class for state management.

SampodProvider:

Provides state management to child widgets.

SampodBuilder:

Builds widgets based on the state.

Contributing

We welcome contributions! Please follow our contribution guidelines for details on how to get involved.

License

This project is licensed under the MIT License.