首页 > 其他分享 >11、层叠布局(Stack、Align、 Positioned)

11、层叠布局(Stack、Align、 Positioned)

时间:2023-11-17 21:23:06浏览次数:26  
标签:11 const Align Positioned child 对齐 Stack Alignment

Flutter Stack组件

Stack表示堆的意思,我们可以用Stack或者Stack结合Align或者Stack结合 Positiond来实现页面的定位 布局 

 

Alignment(对齐)类是用于表示相对于父容器的对齐方式的;

Alignment 类的常见用法:
  1. Alignment.topLeft: 左上对齐
  2. Alignment.topCenter: 居中顶部对齐
  3. Alignment.topRight: 右上对齐
  4. Alignment.centerLeft: 居中左侧对齐
  5. Alignment.center: 居中对齐 (默认值)
  6. Alignment.centerRight: 居中右侧对齐
  7. Alignment.bottomLeft: 左下对齐
  8. Alignment.bottomCenter: 居中底部对齐
  9. Alignment.bottomRight: 右下对齐

     Alignment 还可以使用偏移量进行微调。例如:

  1. Alignment(-1.0, -1.0): 左上角对齐
  2. Alignment(1.0, 0.0): 右侧居中对齐
  3. Alignment(0.0, 0.5): 父容器顶部中心对齐
class MyApp extends StatelessWidget {
  const MyApp({super.key});
  @override
  Widget build(BuildContext context) {
    return  Stack(
      alignment: Alignment.center, //子元素显示的位置
      children: [
        Container(
          height: 150,
          width: 150,
          color: Colors.red,
        ),
        Text("你好")
      ],);
  }}

Flutter Stack Align

Align 组件可以调整子组件的位置 , Stack组件中结合Align组件也可以控制每个子元素的显示位置
1.Align结合Container的使用
class MyApp extends StatelessWidget {
  const MyApp({super.key});
  @override
  Widget build(BuildContext context) {
    return Container(
          // alignment: Alignment.center,
          height: 150,
          width: 150,
          color: Colors.red,
          child:  const Align(  //  center是Align的子主键
            alignment: Alignment.center,
            child:  Text("你好"),)
        );
  }
}
2.Align结合Alignment 参数
class MyApp extends StatelessWidget {
  const MyApp({super.key});
  @override
  Widget build(BuildContext context) {
    return Container(
          // alignment: Alignment.center,
          height: 150,
          width: 150,
          color: Colors.red,
          child:  const Align(  //  center是Align的子主键
            alignment: Alignment(0,1),  //(Alignment.x*childWidth/2+childWidth/2, Alignment.y*childHeight/2+childHeight/2)
            child:  Text("你好"),)
        );
  }
}
Alignment 可以通过其坐标转换公式将其坐标转为子元素的具体偏移坐标:  (Alignment.x*childWidth/2+childWidth/2, Alignment.y*childHeight/2+childHeight/2)  其中 childWidth 为子元素的宽度, childHeight 为子元素高度
3.Align结合Alignment 参数
Center 继承自 Align ,它比 Align 只少了一个 alignment 参数;由于 Align 的构造函数中 alignment 值为 Alignment.center ,所以,我们可以认为 Center 组件其实是对齐方式确定
4.Align结合Stack组件
class MyApp extends StatelessWidget {
  const MyApp({super.key});
  @override
  Widget build(BuildContext context) {
    return Container(
      width: 300,
      height: 200,
      color: Colors.red,
      child: const Stack(
        children: [
          Align(
            alignment: Alignment.topLeft,
            child: Text("收藏"),
          ),
          Align(
            alignment: Alignment.topRight,
            child: Text("购买"),
          )
        ],
      ),
    );
  }
}

Flutter Stack Positioned

Stack组件中结合Positioned组件也可以控制每个子元素的显示位置

 

Stack 结合Positioned参数
class HomePage extends StatelessWidget {
  const HomePage({super.key});

  @override
  Widget build(BuildContext context) {
    return Container(
      height: 400,
      width: 400,
      color: Colors.yellow,
      child: Stack(   //注意:相对于外部容器进行定位 如果没有外部容器就相对于整个屏幕进行定位
        children: [
          Positioned(
            left: 0,
width: 50,//配置子元素的宽度 无法使用double.infinity // right: 0, bottom: 0, child: Container( height: 300, width: 300, color: Colors.red, ),), const Positioned(right: 0, top: 190, child: Text("你好吗")) ],), ); }}

 

 

 

 

 

 

 

 

 

 

标签:11,const,Align,Positioned,child,对齐,Stack,Alignment
From: https://www.cnblogs.com/xbinbin/p/17836367.html

相关文章

  • [20231115]如何快速获取AWR中涉及到的表.txt
    [20231115]如何快速获取AWR中涉及到的表.txt--//昨天看了链接:如何快速获取AWR中涉及到的表=>https://www.cnblogs.com/jyzhao/p/how-to-get-tables-in-awr.html--//作者介绍的方法是直接从awr报表抽取from后面的信息,grep写法还很少用.grep-o-i'\bFROM\s\+\(\w\+\)'awr.html......
  • 11.16每日总结
     昨天博客忘记发了,补一下。 昨天上课王老师强调了智能排产。昨天在做一个可以实现不同表都可以调用的增函数。publicstaticvoidinsertData(StringtableName,String...columnValuePairs){Connectionconnection=getConnection();try{......
  • 端口号错误解决 11.17
    在大数据实验二中遇到问题:端口号错误,导致无法对hdfs中文件进行读取,解决办法:输入shell命令;hdfs getconf-confKeyfs.default.name对端口号进行查看......
  • 11.17每日总结
     今天继续学习Java,跟着B站的视频开始做maven的Javaweb项目总体感受时maven方便了我们对jar包的使用,在未来项目需要用大量jar包时maven会大大减轻我们的工作量......
  • 每日总结20231117
    代码时间(包括上课)3h代码量(行):100行博客数量(篇):1篇相关事项:1、今天是周五,今天的期中测试延迟了,今天主要的是把人机交互技术的b/s架构的报告写完了,而且同时写了一篇思想汇报,思想汇报终于写完了,目前他可以告一段落了。2、今天下午洗了洗澡,洗了洗衣服,也收获满满。3、今天晚上打算......
  • 11.17每日总结
    本次实验属于模仿型实验,通过本次实验学生将掌握以下内容: 1、理解职责链模式的动机,掌握该模式的结构;2、能够利用职责链模式解决实际问题。[实验任务一]:财务审批某物资管理系统中物资采购需要分级审批,主任可以审批1万元及以下的采购单,部门经理可以审批5万元及以下的采购单,副总......
  • 每日总结11.17
    今天做出来了ERP模块的人事管理系统原型,学习了SpringBoot的相关知识。SpringBootStarter:他将常用的依赖分组进行了整合,将其合并到一个依赖中,这样就可以一次性添加到项目的Maven或Gradle构建中。使编码变得简单,SpringBoot采用JavaConfig的方式对Spring进行配置,并且提供了大量的......
  • 11.17
    “提炼方法”的步骤:设计一个新方法,并按照提炼代码的意图给方法命名。把原来方法中要提炼出的代码直接复制到新的方法中。检查目标方法中的局部变量、引用变量和临时变量,做出相应修改,有时要运用移除临时变量或分解临时变量的策略。在源方法中调用目标方法,取代提炼的代码。通过......
  • 2023-11-17 闲话
    偶然看到这首词,于是想锐评一下:辛苦最怜天上月,一昔如环,昔昔都成玦。若似月轮终皎洁,不辞冰雪为卿热。无那尘缘容易绝,燕子依然,软踏帘钩说。唱罢秋坟愁未歇,春丛认取双栖蝶。Fuckingmasterpiece.昨天一个人发了个空间说要去CitadelSecurities写代码了。结果评论区炸了,大概内......
  • P4115 Qtree4 题解
    P4115看到单点修改,求全局白色的最远距离,可以使用点分树。考虑维护这棵点分树,想想树的直径的dp求法:\(f_u=\max\{f_v+w(u,v)\}\),答案为\(\max(f_v+f_{v'})(v,v'\in\{\text{son}_u\})\),\(\{\text{son}_i\}\)表示\(i\)的孩子集合。这时候维护就十分简单了,对于每个点都......