flutter - 在 flutter 中重新创建此布局

标签 flutter

我想在 flutter 中制作这个布局:

Layout

它由五个按钮组成,其中第五个按钮位于其他四个按钮的中间,给人一种其他按钮不是矩形的错觉。

这在 flutter 中甚至可能吗?欢迎提供一些指南。

谢谢。

最佳答案

您可以使用 Stack 小部件将 Circle 按钮放置在中心。

这是我做的例子:

    @override
    Widget build(BuildContext context) {
      return new Scaffold(
        backgroundColor: Colors.grey[800],
        body: Center(
          child: Stack(
            children: [
              Column(
                mainAxisAlignment: MainAxisAlignment.center,
                children: [
                  Row(
                    mainAxisAlignment: MainAxisAlignment.center,
                    children: [
                      MyButton(),
                      MyButton(),
                    ],
                  ),
                  Row(
                    mainAxisAlignment: MainAxisAlignment.center,
                    children: [
                      MyButton(),
                      MyButton(),
                    ],
                  ),
                ],
              ),
              Center(
                child: MyCircleButton(),
              ),
            ],
          ),
        ),
      );
    }
  }

  class MyButton extends StatelessWidget {
    @override
    Widget build(BuildContext context) {
      return Container(
        width: 120,
        margin: EdgeInsets.all(5),
        height: 120,
        decoration: BoxDecoration(
          color: Colors.white,
          borderRadius: BorderRadius.circular(10.0),
        ),
        child: Material(
          color: Colors.transparent,
          child: InkWell(
            onTap: () {
              print("On click");
            },
          ),
        ),
      );
    }
  }

  class MyCircleButton extends StatelessWidget {
    @override
    Widget build(BuildContext context) {
      return ClipRRect(
        borderRadius: BorderRadius.all(Radius.circular(60.0)),
        child: Container(
          width: 120,
          height: 120,
          decoration: BoxDecoration(
            color: Colors.black,
            borderRadius: BorderRadius.circular(10.0),
          ),
          child: Material(
            color: Colors.transparent,
            child: InkWell(
              highlightColor: Colors.red,
              onTap: () {
                print("On circle click");
              },
            ),
          ),
        ),
      );
    }
  }

尝试阅读更多关于 Flutter 布局的信息,这里有很多信息:https://flutter.dev/docs/development/ui/layout

关于flutter - 在 flutter 中重新创建此布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55765623/

相关文章:

flutter - 杀死它后如何接收我的应用程序日志?

flutter - 在build方法flutter中调用异步函数

flutter - Agora 视频通话中不显示远程视频网格

flutter - switch case 表达式类型 'Type' 必须是 switch 表达式类型 'BankEvent' 的子类型

flutter - ListView 内的容器即使有高度也会扩展

flutter - Flutter中使用child center的stack child的相对定位

Flutter - 使用 Linkedin API 和 linkedin_login 包获取配置文件 URL

flutter - flutter :为什么当textField失去焦点时输入内容消失了?

flutter - 为什么在Dart中执行“方法级联”时出现此错误?

flutter - flutter 通知中没有振动