如何使用 BLoC Flutter 在小部件中使用实体(模型)

How to consume the entitie (model) in a widget with BLoC Flutter

我在一个使用 BLoC 进行状态管理的应用程序中工作,情况是这样的: 我有一个 SearchDelegate,其模型为 DataType (SearchDelegate<SearchModel>),此 SearchDelegate 使用 API 来获取 SearchResults。当我在其中一个结果中 onTap() 时,我将信息保存在名称为 searchResults 的变量中,然后我使用 close(context, result) 并导航到新页面,在此页面中我想使用该模型的所有信息,问题是我不知道该怎么做。

当有人点击其中一个选项时我的 BuildResults 的代码

onTap: () {
 final searchResult = SearchModel(
  position: LatLng( search.lat[0], search.lng[1]),
  name: search.text,
  description: search.placeName
 );
close(context, result);
pushToPage(context, const RoutePage());
},

如何传递此参数并在 UI with Bloc 中使用它们?

实际上,您可以将整个模型创建部分移动到 bloc,然后将模型传递给您的状态 class。一旦模型处于 class 状态,您就可以通过 Bloc 在小部件树中的任何位置访问它。

您可以在您的 RoutePage 小部件中创建一个必需的参数,然后在导航到 RoutePage 屏幕时您可以传递相同的参数

// RoutePage widget class constructor 
const RoutePage({Key? key, required this.subjectModel})
      : super(key: key);
  final SearchModel searchModel;
// while navigation
onTap: () {
 final searchResult = SearchModel(
  position: LatLng( search.lat[0], search.lng[1]),
  name: search.text,
  description: search.placeName
 );
close(context, result);
pushToPage(context,   RoutePage(searchModel:searchResult));
},