【发布时间】: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(
);
}
},
)
),
);
}
如何解决这个问题请帮我解决这个问题
【问题讨论】:
标签: flutter dart flutter-layout flutter-dependencies bloc