0

我目前在项目中使用带有 BottomNavigationBar 的 Scaffold,并且需要在所有这些之上显示一个单独的小部件。

试图在构建返回上创建一个 Stack 并将这个小部件和 Scaffold 作为孩子,但小部件根本不显示(根本不显示)!也没有任何错误消息。

有什么问题?还是有其他方法?(为此目的调用 AlertDialog 不起作用)。

在 Scaffold 的主体上定义 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)
4

2 回答 2

0

这是因为您的 Scaffold 是在您的 Test 小部件上绘制的。Stack 接受多个孩子并从下到上对它们进行排序。所以第一项是最底部的,最后一项是最顶部的。尝试以下操作:

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"),
      ),
    );
  }
}
于 2020-07-30T02:02:49.377 回答
0

正如@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,
        ],
于 2020-07-30T11:32:00.227 回答