![](/img/trans.png)
[英]Scaffold.of() called with a context that does not contain a Scaffold
[英]Flutter : this error appear Scaffold.of() called with a context that does not contain a Scaffold. when i try to show a snackbar
當連接狀態發生變化時,我嘗試使用小吃店,當我使用打印時,連接工作正常。 但是當我嘗試使用 Scaffold.of(context).showSnackBar ....,
我收到了一個錯誤 ['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(),
),
好吧,您似乎還沒有在任何父小部件中構建 Scaffold。
要么這樣做,要么看看 Flushbar 包。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.