Flutter Snackbar和例外:scaffold.of()的
为什么在点击myFlutter Snackbar和例外:scaffold.of()的,flutter,dart,scaffold,Flutter,Dart,Scaffold,为什么在点击myiconButtonmysnackBar后,会使用Scaffold.of()抛出异常 我的代码: : Scaffold( backgroundColor: Colors.white, body: Container( child: ListView.builder( itemCount: user.getInvolvedEvents.length,
iconButton
mysnackBar
后,会使用Scaffold.of()抛出异常
我的代码:
: Scaffold(
backgroundColor: Colors.white,
body: Container(
child: ListView.builder(
itemCount: user.getInvolvedEvents.length,
itemBuilder: (context, i){
return GestureDetector(
onTap: () {
//
},
child: Container(
height: 160.0,
margin: EdgeInsets.all(5),
child: Card(
child: Container(
decoration: BoxDecoration(
child: Stack(
alignment: Alignment.bottomLeft,
children: <Widget>[
Positioned(
bottom: 15,
right: 20,
child: Row(
children: <Widget>[
IconButton(
icon: Icon(Icons.cancel, color: Colors.red, size: 35),
onPressed: () {
return showDialog(
context: context,
builder: (BuildContext context){
return AlertDialog(
content: Text('Czy napewno chcesz odwołać swój udział w wydarzeniu "${user.getInvolvedEvents[i].title}"?'),
actions: <Widget>[
FlatButton(
child: Text(
'TAK',
style: TextStyle(
fontWeight: FontWeight.bold,
color: Colors.black),
),
onPressed: () async {
bool status = await removeFromInterested(user.getInvolvedEvents[i].id);
if(status){
Navigator.of(context).pop(null);
final snackBar = SnackBar(
duration: const Duration(seconds: 3),
content: Text('Nie weźmiesz udziału w wydarzeniu'),
);
Scaffold.of(context).showSnackBar(snackBar);
}
},
),
:脚手架(
背景颜色:Colors.white,
主体:容器(
子项:ListView.builder(
itemCount:user.getInvolvedEvents.length,
itemBuilder:(上下文,i){
返回手势检测器(
onTap:(){
//
},
子:容器(
身高:160.0,
保证金:所有(5),
孩子:卡片(
子:容器(
装饰:盒子装饰(
子:堆栈(
对齐:对齐。左下角,
儿童:[
定位(
底数:15,
右:20,,
孩子:排(
儿童:[
图标按钮(
图标:图标(Icons.cancel,颜色:Colors.red,大小:35),
已按下:(){
返回显示对话框(
上下文:上下文,
生成器:(BuildContext上下文){
返回警报对话框(
内容:文本('Czy napewno chcesz odwołaćswój udziałw wydarzeniu“${user.getInvolvedEvents[i].title}”?),
行动:[
扁平按钮(
子:文本(
"德",,
样式:TextStyle(
fontWeight:fontWeight.bold,
颜色:颜色。黑色),
),
onPressed:()异步{
bool status=wait removefrominterest(user.getInvolvedEvents[i].id);
如果(状态){
Navigator.of(context.pop)(null);
最终蛇杆=蛇杆(
持续时间:常数持续时间(秒数:3),
内容:文本(“Nie weźmiesz udziału w wydarzeniu”),
);
脚手架.of(上下文).showSnackBar(snackBar);
}
},
),
感谢您的帮助:)这是因为您使用的是警报的上下文,该上下文不包含scaffold
您可以改用GlobalKey
:
final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
@override
Widget build(BuildContext context) {
return Scaffold(
key: _scaffoldKey,
)
}
这是因为您使用的是警报
的上下文
,该上下文不包含脚手架
您可以改用GlobalKey
:
final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
@override
Widget build(BuildContext context) {
return Scaffold(
key: _scaffoldKey,
)
}
_scaffoldKey.currentState.showSnackBar(
SnackBar(
content: Text('Text'),
)
);