bloc_plus 0.1.1 copy "bloc_plus: ^0.1.1" to clipboard
bloc_plus: ^0.1.1 copied to clipboard

Extensions for flutter_bloc focused on ergonomics and safety.

example/lib/main.dart

import 'package:bloc_plus/bloc_plus.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';

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

class CounterCubit extends Cubit<int> with HasEffects<int, String> {
  CounterCubit() : super(0);

  void increment() {
    final next = state + 1;
    emit(next);
    if (next == 5) {
      emitEffect('Reached $next');
    }
  }
}

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: BlocProvider(
        create: (_) => CounterCubit(),
        child: const CounterPage(),
      ),
    );
  }
}

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

  @override
  Widget build(BuildContext context) {
    final rebuildPolicy = distinct<int>();

    return Scaffold(
      appBar: AppBar(title: const Text('bloc_plus example')),
      body: EffectListener<CounterCubit, int, String>(
        onEffect: (context, effect) {
          ScaffoldMessenger.of(context).showSnackBar(
            SnackBar(content: Text(effect)),
          );
        },
        child: Center(
          child: BlocBuilderWithBloc<CounterCubit, int>(
            buildWhen: rebuildPolicy.shouldRebuild,
            builder: (context, bloc, state) {
              return Column(
                mainAxisSize: MainAxisSize.min,
                children: [
                  Text('Count: $state', style: const TextStyle(fontSize: 24)),
                  const SizedBox(height: 16),
                  ElevatedButton(
                    onPressed: bloc.increment,
                    child: const Text('Increment'),
                  ),
                ],
              );
            },
          ),
        ),
      ),
    );
  }
}
1
likes
160
points
212
downloads

Publisher

unverified uploader

Weekly Downloads

Extensions for flutter_bloc focused on ergonomics and safety.

Repository (GitHub)
View/report issues

Topics

#flutter #bloc #state-management #widget #async

Documentation

API reference

License

MIT (license)

Dependencies

bloc, flutter, flutter_bloc

More

Packages that depend on bloc_plus