如何使用 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));
},
我在一个使用 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));
},