Лучший способ передать модель с одного экрана на другой FLUTTER

Я использую шаблон Bloc в проекте, и я не понимаю, как мне передать модель на другой экран.

Вот сценарий: Пользователь войдет в систему. Получите учетные данные / значения и передайте их на главный экран.

На данный момент мы используем шаблон BLoC, чтобы получить значение после входа пользователя в систему (будет сохранено в SigninState), затем вызываем BlocBuilder для извлечения этого состояния / значения из SigninState на новый экран (домашний экран) .

Я думаю, что нужно провести рефакторинг:
Обработать значения в SigninCubit.
в случае успеха вызовите SigninLoaded,
Затем передайте модель пользователя в качестве параметра на следующие экраны, чтобы нам не приходилось вызывать BlocBuilder для доступа к модели пользователя в функции построения виджета каждого экрана.

Какие преимущества и недостатки?

Спасибо.


person snap    schedule 21.01.2021    source источник


Ответы (1)


Передача модели User на один экран может быть простой задачей на данный момент, но она может легко выйти из-под контроля, когда у вас есть десятки или сотни экранов и диалогов, требующих пользователя.

Лучшим решением было бы использовать BlocProvider для предоставления Bloc по всему дереву виджетов? Таким образом, вы можете получить доступ к блоку из любого места и перестраивать только те части дерева, которые в этом нуждаются.

BlocProvider.value(
  value: SignInBloc(),
  child: MyApp(),
);

Затем, чтобы построить нужные части дерева:

Widget build(BuildContext context){
   final state = context.watch<SignInBloc>().state;
   return Scaffold(
}
person Wilson Wilson    schedule 21.01.2021
comment
Привет, Уилсон, в настоящее время мы используем этот метод, как я сказал выше. Но я думаю, что нужно передать модель пользователя в навигаторе в качестве параметра следующего экрана. - person snap; 22.01.2021
comment
Но мы уже передаем значение после вызова состояния SignInLoaded, я прав? Мне очень жаль, что я новичок в BLoC-Cubit, поэтому я запутался. - person snap; 22.01.2021