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

时间:2020-11-01 11:54:28

标签: flutter dart widget provider 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(),
            
            ),

1 个答案:

答案 0 :(得分:0)

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

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