Flutter:此错误出现在使用Scaffold.of的上下文中,该上下文不包含Scaffold当我尝试显示小吃店时

问题描述

  • 当连接状态更改时,我尝试使用SnackBar,并且在使用打印时连接正常。但是当我尝试使用Scaffold.of(context).showSnackBar ....,

  • 在没有包含脚手架的上下文中调用['Scaffold.of()时出现错误

从传递给Scaffold.of()的上下文开始,找不到Scaffold的祖先。通常,当所提供的上下文来自与其构建函数实际创建要查找的Scaffold小部件的状态相同的StatefulWidget时。

']



import 'package:Zabatnee/activities_app/enum/connectivity_status.dart';
import 'package:Flutter/material.dart';
import 'package:provider/provider.dart';


class ConnectivityWrapper extends StatefulWidget {
  final Widget childWidget;
  ConnectivityWrapper(this.childWidget);

  @override
  _ConnectivityWrapperState createState() => _ConnectivityWrapperState();
}

class _ConnectivityWrapperState extends State<ConnectivityWrapper> {

 Widget _showOfflinesnakbar(){
Scaffold.of(context).showSnackBar(
                SnackBar(
                  content: 
                  
                  Text(
                    'No internet connection',),duration: Duration(seconds: 3),);

            
           
  }

  @override
  void didChangeDependencies() {
 var connectionState = Provider.of<ConnectivityStatus>(context);

    if(connectionState == ConnectivityStatus.Offline){
          print('the internet is offline');
           _showOfflinesnakbar();

     
    }if(connectionState == ConnectivityStatus.Wifi || connectionState == ConnectivityStatus.Cellular){
    print('the internet is online');
           _showOfflinesnakbar();

    }
    super.didChangeDependencies();
  }
  @override
  Widget build(BuildContext context) {
    return widget.childWidget;
  }
}
  • 在main.dart中,我使用wrapper类作为HomePage,并在其中放入真正的homeScreen:
 home: ConnectivityWrapper(
             CategoriesScreen(),

解决方法

好吧,看来您还没有在任何父窗口小部件中构建一个脚手架。

要么这样做,要么看看Flushbar软件包。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...