首页 > 解决方案 > Flutter :此错误出现 Scaffold.of() 调用的上下文不包含 Scaffold。当我尝试展示小吃店时

问题描述

从传递给 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;
  }
}
 home: ConnectivityWrapper(
             CategoriesScreen(),
            
            ),

标签: flutterdartwidgetproviderscaffold

解决方案


好吧,您似乎还没有在任何父小部件中构建 Scaffold。

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


推荐阅读