bloc_storage 1.0.1 copy "bloc_storage: ^1.0.1" to clipboard
bloc_storage: ^1.0.1 copied to clipboard

A package for storing and retrieving BLoC instances globally.

example/lib/main.dart

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

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

class CounterCubit extends Cubit<int> {
  CounterCubit() : super(0);
  void increment() => emit(state + 1);
}

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(home: HomePage());
  }
}

class HomePage extends StatelessWidget {
  const HomePage({super.key});
  @override
  Widget build(BuildContext context) {
    return BlocProvider<CounterCubit>(
      create: (_) => CounterCubit(),
      child: BlocBuilder<CounterCubit, int>(
        builder: (context, count) {
          return Scaffold(
            appBar: AppBar(title: const Text("Home Page")),
            body: Center(
              child: Text(
                "Count: $count",
                style: const TextStyle(fontSize: 32),
              ),
            ),
            floatingActionButton: FloatingActionButton(
              onPressed: () {
                context.read<CounterCubit>().increment();
              },
              tooltip: "Increment",
              child: const Icon(Icons.add),
            ),
            persistentFooterButtons: [
              ElevatedButton(
                onPressed: () {
                  final counterCubit = context.read<CounterCubit>();

                  /// Store the cubit instance before navigating
                  BlocStorage.store<CounterCubit>(counterCubit);

                  Navigator.of(
                    context,
                  ).push(MaterialPageRoute(builder: (_) => SecondPage()));
                },
                child: const Text("Go to Second Page"),
              ),
            ],
          );
        },
      ),
    );
  }
}

class SecondPage extends StatefulWidget {
  const SecondPage({super.key});

  @override
  State<SecondPage> createState() => _SecondPageState();
}

class _SecondPageState extends State<SecondPage> {
  /// retrieve the stored cubit instance
  final counterCubit = BlocStorage.retrieve<CounterCubit>();

  @override
  void dispose() {
    /// if you want to clear the stored cubit after use
    BlocStorage.clear<CounterCubit>();

    /// if you want to clear all stored cubit
    BlocStorage.clearAll();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return BlocProvider.value(
      value: counterCubit,
      child: Scaffold(
        appBar: AppBar(title: const Text("Second Page")),
        body: Center(
          child: BlocBuilder<CounterCubit, int>(
            builder: (context, count) {
              return Text(
                "Second Page Count: $count",
                style: const TextStyle(fontSize: 32),
              );
            },
          ),
        ),
        floatingActionButton: FloatingActionButton(
          onPressed: () {
            counterCubit.increment();
          },
          tooltip: "Increment",
          child: const Icon(Icons.add),
        ),
      ),
    );
  }
}
1
likes
0
points
40
downloads

Publisher

unverified uploader

Weekly Downloads

A package for storing and retrieving BLoC instances globally.

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

bloc, cupertino_icons, flutter

More

Packages that depend on bloc_storage