首页 > 其他 > 详细

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

时间:2019-09-26 16:45:18      阅读:289      评论:0      收藏:0      [点我收藏+]

代码如下:

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);
                  }));
        },
      ),
    );
  }
}

 

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

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!