How to pass an existing repository instance to the next page in Flutter using the flutter_bloc package?

Issue

I have the following code that passes a bloc to the next page

Navigator.of(context).push(
  MaterialPageRoute<CreateFeedSelectClass>(
   builder: (_) => BlocProvider.value(
     value: BlocProvider.of<TeacheractivityfeedBloc>(context),
     child: CreateFeedSelectClass(imageStringList: state.selectedImages, imagePathList: state.selectedImagePaths, classList: state.classList,))
   )
);

I would like to pass this repository that was already created in this page before the build function

TeacherRepository _teacherRepository = TeacherRepository();

In the example from flutter bloc (https://pub.dev/packages/flutter_bloc)
there is only a way to create a new instance, I want to pass the existing instance instead of creating a new one:

RepositoryProvider(
  create: (context) => RepositoryA(),  //-----> 
  child: ChildA(),
);

instead of
create: is there any way to do something like value: _teacherRepository like how we do it with BlocProvider.value(value:….) ?

Solution

Actually there is a named constructor value available for RepositoryProvider which you can use.

RepositoryProvider.value(
  value: repository,
  child: Container(),
);

Answered By – Amir_P

Answer Checked By – Marilyn (FlutterFixes Volunteer)

Leave a Reply

Your email address will not be published. Required fields are marked *