【问题标题】:When network connectivity comes back auto refresh not happen using Bloc /Cubit flutter?当网络连接恢复时,使用 Bloc /Cubit 颤振不会发生自动刷新?
【发布时间】: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


    【解决方案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();
    

    还有其他答案吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-23
      • 2022-01-21
      • 2011-10-21
      • 1970-01-01
      • 2010-12-10
      • 2022-07-16
      • 2021-08-28
      • 1970-01-01
      相关资源
      最近更新 更多