问题描述
-
当连接状态更改时,我尝试使用SnackBar,并且在使用打印时连接正常。但是当我尝试使用Scaffold.of(context).showSnackBar ....,
从传递给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软件包。