Flutter - 是否可以在另一个容器中显示一个小吃店而不是用来触发 .show 的那个?

问题描述

是否可以让小吃店只出现在另一个小部件中? 我正在尝试类似的方法,以便当我们单击按钮时,小吃栏只会嵌入容器内,不会出现在容器外,但它不起作用:

@override
Widget build(BuildContext context) {
  BuildContext snackContext;
  return Stack(
    children: [
      Builder(builder: (BuildContext context) {
        snackContext = context;
        return Container(height: 300,width: 300,child: Text('Test'));
      }),TextButton(
        onpressed: () {
          ScaffoldMessenger.of(snackContext).showSnackBar(
            SnackBar(
              backgroundColor: Color(0x44000000),content: Text(
                'Test of snackbar',),);
        },)
    ],);
}

请指教~

解决方法

State 中保存正确的上下文。此代码适用于我:

class _TestPageState extends State<TestPage> with TickerProviderStateMixin {
  BuildContext snackContext;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Column(
        mainAxisAlignment: MainAxisAlignment.center,children: [
          Container(
            height: 300,width: 200,child: Scaffold(
              backgroundColor: Colors.deepPurple,body: Builder(builder: (BuildContext context) {
                snackContext = context;
                return Container(height: 300,width: 300,child: Text('Test'));
              }),),Center(
            child: TextButton(
              onPressed: () {
                Scaffold.of(snackContext).showSnackBar(
                  SnackBar(
                    backgroundColor: Color(0x44000000),content: Text(
                      'Test of snackbar',);
              },child: Text('data'),)
        ],);
  }
}

class TestPage extends StatefulWidget {
  @override
  _TestPageState createState() => _TestPageState();
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...