sign_flutter 0.0.5+1 copy "sign_flutter: ^0.0.5+1" to clipboard
sign_flutter: ^0.0.5+1 copied to clipboard

Sign basic state management for Flutter.

example/lib/main.dart

import 'package:flutter/material.dart';

import 'package:sign_flutter/sign_flutter.dart';

void main() {
  runApp(const MaterialApp(
    home: CollectionChangesSign(count: 4),
  ));
}

///
class CollectionChangesSign extends StatefulWidget {
  ///
  const CollectionChangesSign({Key? key, required this.count})
      : super(key: key);

  final int count;

  @override
  State<CollectionChangesSign> createState() => _CollectionChangesSignState();
}

class _CollectionChangesSignState extends State<CollectionChangesSign> {
  ///
  late final List<Signal<int>> list =
      List.generate(widget.count, (index) => 0).signals;

  late final MultiSignal allNotifier = list.multiSignal;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: allNotifier
            .builder((value) => Text('SUM: $sum', key: const Key('sum_sign'))),
      ),
      body: ListView.separated(
        itemCount: list.length,
        cacheExtent: 2000,
        itemBuilder: (c, i) => Padding(
          padding: const EdgeInsets.symmetric(vertical: 30),
          child: CounterWidgetSign(counter: list[i], index: i),
        ),
        separatorBuilder: (context, index) => const Divider(),
      ),
    );
  }

  ///
  int get sum {
    var i = 0;
    for (var o in list) {
      i += o.value;
    }
    return i;
  }
}

///
class CounterWidgetSign extends StatelessWidget {
  ///
  const CounterWidgetSign(
      {Key? key, required this.counter, required this.index})
      : super(key: key);

  ///
  final Signal<int> counter;

  ///
  final int index;

  @override
  Widget build(BuildContext context) => Row(
        children: [
          Container(
            width: 200,
            alignment: Alignment.center,
            margin: const EdgeInsets.symmetric(horizontal: 0),
            child: Text(
              'Index Of $index',
            ),
          ),
          Expanded(
            child: Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: [
                GestureDetector(
                    key: Key('increment_sign_$index'),
                    onTap: () {
                      counter.value++;
                    },
                    child: const Text('Counter Increment')),
                counter.builder((value) => Text(
                      'value_sign_${index}_$value',
                      key: Key('value_sign_$index'),
                    )),
                GestureDetector(
                    key: Key('decrement_sign_$index'),
                    onTap: () {
                      counter.value--;
                    },
                    child: const Text('Counter Decrement'))
              ],
            ),
          ),
        ],
      );
}
3
likes
150
points
10
downloads

Publisher

verified publisherstyledart.dev

Weekly Downloads

Sign basic state management for Flutter.

Documentation

API reference

License

MIT (license)

Dependencies

flutter, sign

More

Packages that depend on sign_flutter