问题描述
是否可以让小吃店只出现在另一个小部件中? 我正在尝试类似的方法,以便当我们单击按钮时,小吃栏只会嵌入容器内,不会出现在容器外,但它不起作用:
@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();
}