Flutter - 堆栈与脚手架
Flutter - Stack with Scaffold
我目前在项目中使用带 BottomNavigationBar 的脚手架,需要在所有这些之上显示一个单独的小部件。
尝试在构建 return 上创建 Stack 并将此小部件和脚手架作为子部件放置,但小部件根本不显示(根本不显示)!也没有任何错误信息。
有什么问题吗?或者还有其他方法吗? (为此目的调用 AlertDialog 无效)。
在脚手架主体上定义 Stack 也不起作用,因为它需要 BottomNavigationBar 的列表。
Widget build(BuildContext context) {
var Test = Center(
child: SizedBox(width: 100, height: 100,
child: Container(
color: Colors.blue,
child: Text("Test"),),),);
return Stack(
alignment: Alignment.center,
children: [
Test,
Scaffold(
appBar: ..... (rest of the code)
这是因为您的脚手架是在您的测试小部件上绘制的。 Stack 接受多个 children 并从下到上对它们进行排序。所以第一项是 bottom-most,最后一项是 top-most。请尝试以下操作:
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Stack(
alignment: Alignment.center,
children: <Widget>[
Scaffold(
appBar: AppBar(title: Text('Hi')),
),
TestWidget(),
],
),
);
}
}
class TestWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
width: 100,
height: 100,
color: Colors.blue,
child: Center(
child: Text("Test"),
),
);
}
}
正如@HBS 提到的,问题是由 Stack 顺序引起的,但只需更改 Widget 顺序即可解决问题:
Widget build(BuildContext context) {
var Test = Center(
child: SizedBox(width: 100, height: 100,
child: Container(
color: Colors.blue,
child: Text("Test"),),),);
return Stack(
alignment: Alignment.center,
children: [
Scaffold(
appBar: ..... (rest of the code),
Test,
],
我目前在项目中使用带 BottomNavigationBar 的脚手架,需要在所有这些之上显示一个单独的小部件。
尝试在构建 return 上创建 Stack 并将此小部件和脚手架作为子部件放置,但小部件根本不显示(根本不显示)!也没有任何错误信息。
有什么问题吗?或者还有其他方法吗? (为此目的调用 AlertDialog 无效)。
在脚手架主体上定义 Stack 也不起作用,因为它需要 BottomNavigationBar 的列表。
Widget build(BuildContext context) {
var Test = Center(
child: SizedBox(width: 100, height: 100,
child: Container(
color: Colors.blue,
child: Text("Test"),),),);
return Stack(
alignment: Alignment.center,
children: [
Test,
Scaffold(
appBar: ..... (rest of the code)
这是因为您的脚手架是在您的测试小部件上绘制的。 Stack 接受多个 children 并从下到上对它们进行排序。所以第一项是 bottom-most,最后一项是 top-most。请尝试以下操作:
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Stack(
alignment: Alignment.center,
children: <Widget>[
Scaffold(
appBar: AppBar(title: Text('Hi')),
),
TestWidget(),
],
),
);
}
}
class TestWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
width: 100,
height: 100,
color: Colors.blue,
child: Center(
child: Text("Test"),
),
);
}
}
正如@HBS 提到的,问题是由 Stack 顺序引起的,但只需更改 Widget 顺序即可解决问题:
Widget build(BuildContext context) {
var Test = Center(
child: SizedBox(width: 100, height: 100,
child: Container(
color: Colors.blue,
child: Text("Test"),),),);
return Stack(
alignment: Alignment.center,
children: [
Scaffold(
appBar: ..... (rest of the code),
Test,
],