states_rebuilder_extended 1.0.3 copy "states_rebuilder_extended: ^1.0.3" to clipboard
states_rebuilder_extended: ^1.0.3 copied to clipboard

Extensions and helpers enhancing states_rebuilder (Injected) API: update/toggle/multi-builder utilities + MyNull injector.

example/lib/main.dart

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

void main() {
  runApp(const MyApp());
}

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'states_rebuilder_extended Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(),
    );
  }
}

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

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('states_rebuilder_extended Example'),
      ),
      body: const Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            CounterWidget(),
            SizedBox(height: 20),
            ToggleWidget(),
            SizedBox(height: 20),
            MultiCounterWidget(),
          ],
        ),
      ),
    );
  }
}

// Example of safer update and builder
class CounterWidget extends StatelessWidget {
  const CounterWidget({super.key});

  static final counter = 0.inject();

  @override
  Widget build(BuildContext context) {
    return counter.builderData<int>(
      (count) => Column(
        children: [
          Text('Counter: $count'),
          ElevatedButton(
            onPressed: () => counter.update<int>((s) => s + 1),
            child: const Text('Increment'),
          ),
        ],
      ),
    );
  }
}

// Example of toggle
class ToggleWidget extends StatelessWidget {
  const ToggleWidget({super.key});

  static final isEnabled = false.inject();

  @override
  Widget build(BuildContext context) {
    return isEnabled.builderData<bool>(
      (enabled) => Column(
        children: [
          Text('Enabled: $enabled'),
          ElevatedButton(
            onPressed: () => isEnabled.toggle(),
            child: const Text('Toggle'),
          ),
        ],
      ),
    );
  }
}

// Example of multi-builder
class MultiCounterWidget extends StatelessWidget {
  const MultiCounterWidget({super.key});

  static final counters = [0.inject(), 0.inject(), 0.inject()];

  @override
  Widget build(BuildContext context) {
    return counters.builderDataIndexed(
      (index, count) => Row(
        mainAxisAlignment: MainAxisAlignment.center,
        children: [
          Text('Counter $index: $count'),
          ElevatedButton(
            onPressed: () => counters.update<int>((s) => s + 1, index: index),
            child: const Text('+'),
          ),
        ],
      ),
    );
  }
}
0
likes
160
points
39
downloads

Publisher

unverified uploader

Weekly Downloads

Extensions and helpers enhancing states_rebuilder (Injected) API: update/toggle/multi-builder utilities + MyNull injector.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

flutter, states_rebuilder

More

Packages that depend on states_rebuilder_extended