如何将两个容器放在彼此之上?

How can I set two container on top of each other?

我正在尝试将 2 个容器放在彼此之上。我想要的是展示一颗星,当用户按下星号时,我想打开 5 星,这样他就可以投票了。我不太确定我的想法是否正确。但是,如果我想创建一个容器,并在这个星形容器正上方的另一个容器中显示所有其他按钮,那么按钮如何才能正常计时。我希望你明白我想做什么。因此,当我将星形容器也放在同一个容器中时,它们会在打开所有星形时按下按钮,整个容器将移动不是吗? 所以我正在尝试这样做。


class VideoPage extends StatelessWidget {
  static const route = '/Video';
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Column(
        children: [
          Container(
            height: 100,
            color: Colors.yellow[300],
          ),
          Expanded(
            child: Row(
              children: [
                Expanded(
                  child: Container(color: Colors.green[300]),
                ),
                Container(
                  width: 100,
                  color: Colors.orange[300],
                ),
                Container(
                  width: 100,
                  color: Colors.red[300],
                ),
              ],
            ),
          ),
          Container(
            height: 80,
            color: Colors.blue[300],
          ),
        ],
      ),
    );
  }
}

看起来像这样:

我希望橙色的直接在红色的下面,这样第一颗星就会出现,按下它会打开 5 颗星。这可能是我正在尝试的吗?如果是这样请帮助。如果不行请帮忙哈哈

您需要使用的是 Stack 小工具:

Stack(
  children: <Widget>[
    BottomWidget(),
    MiddleWidget(),
    TopWidget(),
  ],
),

children 的最后一个小部件是顶层,结构降序。

更多信息:https://medium.com/flutter-community/a-deep-dive-into-stack-in-flutter-3264619b3a77

编辑: 在你的情况下,如果你想要橙色的在下面,你必须在你的结构中做一些改变并将它从你的 Row()

中分离出来

例子

import 'package:flutter/material.dart';

final Color darkBlue = Color.fromARGB(255, 18, 32, 47);

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData.dark().copyWith(scaffoldBackgroundColor: darkBlue),
      debugShowCheckedModeBanner: false,
      home: Scaffold(
        body: Center(
          child: MyWidget(),
        ),
      ),
    );
  }
}

class MyWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Column(
        children: [
          Container(
            height: 100,
            color: Colors.yellow[300],
          ),
          Stack(
            children: <Widget>[
              
              Container(
                  width: MediaQuery.of(context).size.width *1,
                  height: 200,
                  color: Colors.orange,
                ),
              
             Container(
               height:200,
               child: Row(
              children: [
                Expanded(
                  child: Container(color: Colors.green[300]),
                ),
                
                Container(
                  width: 100,
                  color: Colors.red.withOpacity(0.5),
                ),
              ],
            )),
              
  ],
          
          ),
          Container(
            height: 80,
            color: Colors.blue[300],
          ),
        ],
      ),
    );
  }
}