当网络连接恢复时,使用 Bloc /Cubit 颤振不会发生自动刷新?
Posted
技术标签:
【中文标题】当网络连接恢复时,使用 Bloc /Cubit 颤振不会发生自动刷新?【英文标题】:When network connectivity comes back auto refresh not happen using Bloc /Cubit flutter? 【发布时间】:2021-10-30 01:03:34 【问题描述】:我设计了 3 个底部导航点击,即仪表板、主页、设置。由于某种原因网络问题,我在主屏幕上。所以导航到仪表板屏幕。该应用程序显示一条消息,例如没有互联网连接点击重试。点击点击重试仪表板屏幕已连接并且工作正常。然后转到主页仍然显示错误消息小部件。
当互联网连接返回页面时,它不刷新是否可以这样做,我尝试使用下面的示例代码:
class MyApp extends StatelessWidget
@override
Widget build(BuildContext context)
final Connectivity connectivity=Connectivity();
return MultiBlocProvider(
providers: [
BlocProvider(
create: (context) => InternetCubit(connectivity: connectivity)),
],
child: MaterialApp(home:BottomNavScreen())
);
BottomNavScreen 构建
@override
Widget build(BuildContext context)
Repository repository =Repository(networkService: NetworkService());
return MultiBlocProvider(
providers: [
BlocProvider(
create: (BuildContext context) => DashCubit(
repository: repository,
//todosCubit: getOtpCubit,
)),
BlocProvider(
create: (BuildContext context) => HomeCubit(
repository: repository,
//todosCubit: getOtpCubit,
)),
],
child:
BlocBuilder<InternetCubit, InternetState>(
builder: (context, state)
return Scaffold(
body:Center(
child: PersistentTabView(
context,
controller: _controller,
screens: _buildScreens(),
items: _navBarsItems(themeData),
),
),
)
,
);
,
),
);
主屏幕
@override
Widget build(BuildContext context)
return
BlocListener<InternetCubit, InternetState>(
listener: (context, state)
if (state is InternetDisconnected )
Scaffold.of(context).showSnackBar(SnackBar(
content: Text('InternetDisconnected'),
backgroundColor: Colors.red,
));
,
child: Scaffold(
body:
BlocConsumer<HomeCubit, HomeState>(
listener: (context, state)
,
builder: (context, state)
if (state is ErrorState)
return Container(
height: double.infinity,
child: ErrorTxt(
message: '$error\n\nTap to Retry.',
ontap: _loadAlbums,
),
);
else if (state is HomeLoaded)
return
Container(
);
,
)
),
);
如何解决这个问题请帮我解决这个问题
【问题讨论】:
【参考方案1】:它在 Internet 状态连接内工作以加载小部件。我尝试使用以下引用的链接 https://github.com/TheWCKD/blocFromZeroToHero/tree/master/%237%20- %20BLoC%20通讯
BlocBuilder<InternetCubit, InternetState>(
builder: (context, state)
if (state is InternetConnected )
return buildBlocConsumer();
else if (state is InternetDisconnected)
return ErrorTxt(
message: 'Check Network Connection \n\n Tap to Retry ',
ontap: _loadAlbums,
);
return buildBlocConsumer();
还有其他答案吗?
【讨论】:
以上是关于当网络连接恢复时,使用 Bloc /Cubit 颤振不会发生自动刷新?的主要内容,如果未能解决你的问题,请参考以下文章
调度第一个 bloc 事件或 cubit 方法,在 StatelessWidget 内的页面开始