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

A package that makes life more easier

BlocSimple

A simplified approach to using the BLoC pattern in Flutter. Reduce boilerplate, improve readability, and streamline state management with powerful utilities.

โœจ Features ๐Ÿ”„ Simplified State Management Pre-defined SimpleState

๐Ÿ“‰ Minimal Boilerplate Just extend SimpleCubit or SimpleBloc, no extra setup required.

๐Ÿ”Œ Repository Integration Easily connect BLoCs and Cubits to external data sources with RepositoryConnector.

โšก Async Execution Automatically handle async loading, success, and error states using executeAsync.

๐Ÿงช Testing Support Built-in testing utilities for unit and widget tests.

๐Ÿš€ Installation Add this to your pubspec.yaml:

yaml Copy Edit dependencies: bloc_simple: ^1.0.2 ๐Ÿ“ฆ Usage ๐Ÿงฎ Counter Cubit Example dart Copy Edit class CounterCubit extends SimpleCubit

void increment() => setSuccess((state.data ?? 0) + 1); void decrement() => setSuccess((state.data ?? 0) - 1); } ๐Ÿ–ผ๏ธ In UI dart Copy Edit BlocBuilder<CounterCubit, SimpleState

Future

@override void registerEventHandlers() { on

SimpleState.initial() โ€“ Initial idle state

SimpleState.loading() โ€“ While loading

SimpleState.success(data) โ€“ On success

SimpleState.error(message) โ€“ On error

๐Ÿงช Testing Utilities Easily test your SimpleCubit or SimpleBloc with:

dart Copy Edit testSimpleCubit

Example #

Here's a complete example in example/main.dart:

import 'package:bloc_simple/simple_cubit.dart';
import 'package:bloc_simple/state_types.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';

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

class CounterCubit extends SimpleCubit<int> {
  CounterCubit() {
    setSuccess(0);
  }

  void increment() => setSuccess((state.data ?? 0) + 1);
}

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

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

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

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Simple Counter')),
      body: Center(
        child: BlocBuilder<CounterCubit, SimpleState<int>>(
          builder: (context, state) {
            if (state.isLoading) return const CircularProgressIndicator();
            if (state.isError) return Text('Error: ${state.errorMessage}');
            return Text(
              '${state.data ?? 0}',
              style: const TextStyle(fontSize: 40),
            );
          },
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () => context.read<CounterCubit>().increment(),
        child: const Icon(Icons.add),
      ),
    );
  }
}


๐Ÿ“œ License
MIT ยฉ Dwaipayan Biswas

Built with โค๏ธ by [Dwaipayan Biswas](https://github.com/dwaipayan7)
2
likes
120
points
68
downloads

Publisher

unverified uploader

Weekly Downloads

A package that makes life more easier

Repository (GitHub)

Documentation

API reference

License

MIT (license)

Dependencies

bloc, bloc_test, cupertino_icons, equatable, flutter, flutter_bloc, meta

More

Packages that depend on bloc_simple