直接在异步代码中这样调用会报错
Scaffold.of(this.context).showSnackBar(SnackBar(
content: Text(res.data["errorMsg"].toString()),
));
如下错误信息:
E/flutter (15261): [ERROR:flutter/lib/ui/ui_dart_state.cc(148)] Unhandled Exception: Scaffold.of() called with a context that does not contain a Scaffold.
改成如下这种方式可以正常使用,见粗体部分:
class _XXXPageStateextends State {
var _scaffoldkey =new GlobalKey();
@override
Widget build(BuildContext context) {
return Scaffold(
key:_scaffoldkey,
...
);
}
Future DioRequest()async {
...
showSnackBar("这样调用可以显示");
}
void showSnackBar(String message) {
var snackBar = SnackBar(content: Text(message));_scaffoldkey.currentState.showSnackBar(snackBar);
}
}
网友评论