flutter SnackBar异常Another exception was thrown: Scaffold.of() called with a context that does not contain a Scaffold

时间:2019-09-26
本文章向大家介绍flutter SnackBar异常Another exception was thrown: Scaffold.of() called with a context that does not contain a Scaffold,主要包括flutter SnackBar异常Another exception was thrown: Scaffold.of() called with a context that does not contain a Scaffold使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

代码如下:

import 'package:flutter/material.dart';

void main() {
  runApp(MaterialApp(
    title: 'Returning Data',
    home: HomePage(),
  ));
}

class HomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter SnackBar'),
      ),
      body: Center(
        child: MaterialButton(
          color: Colors.blue,
          child: new Text('点我'),
          onPressed: () {
            final snackBar = new SnackBar(content: new Text('这是一个SnackBar'));
            Scaffold.of(context).showSnackBar(snackBar);
          },
        ),
      ),
    );
  }
}

当BuildContext在Scaffold之前时,调用Scaffold.of(context)会报错。这时可以通过Builder Widget来解决,代码如下:

import 'package:flutter/material.dart';

void main() {
  runApp(MaterialApp(
    title: 'Returning Data',
    home: HomePage(),
  ));
}

class HomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter SnackBar'),
      ),
      body: Builder(
        builder: (BuildContext context) {
          return new Center(
              child: MaterialButton(
                  color: Colors.blue,
                  child: new Text('点我'),
                  onPressed: () {
                    final snackBar =
                        new SnackBar(content: new Text('这是一个SnackBar'));
                    Scaffold.of(context).showSnackBar(snackBar);
                  }));
        },
      ),
    );
  }
}

原文地址:https://www.cnblogs.com/mingfeng002/p/11592228.html