bloc_storage 1.0.0 copy "bloc_storage: ^1.0.0" to clipboard
bloc_storage: ^1.0.0 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

cupertino_icons, flutter, flutter_bloc

More

Packages that depend on bloc_storage