在多个屏幕之间共享 BLoC 的便捷方式

tow*_*hid 3 provider dart flutter bloc

我正在寻找在不同屏幕/页面中共享块的最便捷方法,而无需在材料应用程序顶部提供。例如,我有一个Customer集团,这是CustomerListScreen和中所必需的CustomerDetailsScreen。该块是在导航时创建的CustomerListScreen并将其传递给CustomerDetailsScreen

Navigator.context, MaterialPageRoute(builder: (context) => CustomerDetailsScreen(context.read<CustomerBloc>())));
Run Code Online (Sandbox Code Playgroud)

这就是我现在正在遵循的程序。寻找任何更好的方法可用..

use*_*290 8

使用BlocProvider.value

BlocProvider 可用于向小部件树的新部分提供现有块。当需要将现有块提供给新路线时,这将是最常用的。在这种情况下,BlocProvider 不会自动关闭块,因为它没有创建它。

BlocProvider.value(
  value: context.read<CustomerBloc>(),
  child: CustomerDetailsScreen(),
);
Run Code Online (Sandbox Code Playgroud)

  • 这是另一个问题,但请使用 AutoRouteWrapper (https://pub.dev/packages/auto_route#wrapping-routes)。 (2认同)