sampod 0.0.5 copy "sampod: ^0.0.5" to clipboard
sampod: ^0.0.5 copied to clipboard

This is a State Management.

Sampod #

Description #

This is a State Management.

Usage #

import 'dart:math';

import 'package:flutter/material.dart';
import 'package:sampod_test/sampod/sampod.dart';
import 'package:sampod_test/sampod/sampod_builder.dart';
import 'package:sampod_test/sampod/sampod_provider.dart';

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;

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

class OpacitySampod extends Sampod {
  double opacity = 0;

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

27
likes
0
points
1
downloads

Publisher

unverified uploader

Weekly Downloads

This is a State Management.

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

flutter

More

Packages that depend on sampod