0

I new a bloc/cubit pattern, before I used provider, getx and I want to ask something.

This application have nearly 40 pages and I want to use bloc just 10 pages and close bloc instance when is last page is closed.

Example page 1, I initialize bloc, and it is initialized on the other pages (2, 3, 4...9) will use same bloc/cubit instance and 10 page close bloc instance close

This is router class and cubit initialize here

    class Router {
  static Route<dynamic> generateRoute(RouteSettings settings) {
    final RegisterCubit _registerCubit = RegisterCubit();
    switch (settings.name) {
      case welcomeRoute:
        return MaterialPageRoute(builder: (_) => WelcomePage());
      case loginRoute:
        return MaterialPageRoute(builder: (_) => LoginPage());
      case homeRoute:
        return MaterialPageRoute(builder: (_) => HomePage());
      case referanceCodePreview:
        return MaterialPageRoute(
            builder: (_) => BlocProvider.value(
                  value: _registerCubit,
                  child: ReferancaCodePreviewView(),
                ));
      case registerOne:
        return MaterialPageRoute(
            builder: (_) => BlocProvider.value(
                  value: _registerCubit,
                  child: RegisterPageOne(),
                ));
      case registerTwo:
        return MaterialPageRoute(
            builder: (_) => BlocProvider.value(
                  value: _registerCubit,
                  child: RegisterPageOTwo(),
                ));
      case registerThree:
        return MaterialPageRoute(
            builder: (_) => BlocProvider.value(
                  value: _registerCubit,
                  child: RegisterPageOThree(),
                ));
      case registerFour:
        return MaterialPageRoute(
            builder: (_) => BlocProvider.value(
                  value: _registerCubit,
                  child: RegisterPageFour(),
                ));
      case registerFive:
        return MaterialPageRoute(
            builder: (a) => BlocProvider.value(
                  value: _registerCubit,
                  child: RegisterPageFive(),
                ));

This page four and this page not listen to _registerCubit

class RegisterPageFour extends StatefulWidget   {
  RegisterPageFour({Key? key}) : super(key: key);

  @override
  State<RegisterPageFour> createState() => _RegisterPageFourState();
}

class _RegisterPageFourState extends State<RegisterPageFour> with
ImageSelectPicker {
  @override
  Widget build(BuildContext context) {
    return  BlocConsumer<RegisterCubit, RegisterState>(
        listener: (contex, state) {},
        builder: (context, state) {
          return buildScaffold(context, state);
        },
      );
  }

Navigation PageFour

 CustomButton(
            buttonWidth: MediaQuery.of(context).size.width,
            onPress: () => Navigator.pushNamed(context, "/registerFour"),
            title: "İleri"),

Can you help me this issue ?

Said Kurt
  • 104
  • 7

1 Answers1

0
final RegisterCubit _registerCubit = RegisterCubit();

I suggest you to create object of RegisterCubit outside of generateRoute function. Something like this,

class Router {
 final RegisterCubit _registerCubit = RegisterCubit();
 static Route<dynamic> generateRoute(RouteSettings settings) {
 switch (settings.name) {
 }