NoSuchMethodError:方法“ showSnackBar”在null

时间:2020-05-24 17:46:31

标签: flutter snackbar

我试图在用户按下“添加到购物车”按钮后显示小吃店消息,但是出现以下错误:

[VERBOSE-2:ui_dart_state.cc(166)]未处理的异常:NoSuchMethodError:方法'showSnackBar'在null上被调用。

收件人:空

尝试调用:showSnackBar(“ SnackBar”的实例)

这是我的代码:

class ProductDetail extends StatefulWidget {
  final Product product;
  ProductDetail(this.product);
  @override
  _ProductDetailState createState() => _ProductDetailState();
}

class _ProductDetailState extends State<ProductDetail> {
  final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
  CartService _cartService = CartService();

  _addToCart(BuildContext context, Product product) async {
    var result = await _cartService.addToCart(product);
    if (result > 0) {
      print(result);
      _showSnackMessage(Text(
        'Item added to cart successfully!',
        style: TextStyle(color: Colors.green),
      ));
    } else {
      _showSnackMessage(Text(
        'Failed to add to cart!',
        style: TextStyle(color: Colors.red),
      ));
    }
  }

  _showSnackMessage(message) {
    var snackBar = SnackBar(
      content: message,
    );
    _scaffoldKey.currentState.showSnackBar(snackBar);
  }

任何人都可以用您的专业知识来帮助我吗?

1 个答案:

答案 0 :(得分:1)

您必须将_scaffoldKey添加到Scaffold小部件中,如下所示:

Scaffold(key:_scaffoldKey,...)

如果您不提供脚手架小部件的钥匙,则此字段为空。