当前位置: 首页 > news >正文

Flutter基础(前端教程①-容器和控件位置)

  1. 一个红色背景的 Container
  2. 垂直排列的 Column 布局
  3. 中央的 ElevatedButton
  4. 按钮下方的白色文本
import 'package:flutter/material.dart';void main() {runApp(const MyApp());
}class MyApp extends StatelessWidget {const MyApp({Key? key}) : super(key: key);@overrideWidget build(BuildContext context) {return MaterialApp(home: Scaffold(appBar: AppBar(title: const Text('Flutter Container Demo')),body: Center(child: Container(width: 300,height: 200,decoration: const BoxDecoration(color: Colors.red, // 设置背景为红色),child: Column(mainAxisAlignment: MainAxisAlignment.center,children: [ElevatedButton(onPressed: () {},child: const Text('点击按钮'),),const SizedBox(height: 20), // 按钮和文字之间的间距const Text('按钮下方的文字',style: TextStyle(color: Colors.white),),],),),),),);}
}

在 Flutter 中,Column是一个垂直方向排列子组件的布局控件,而mainAxisAlignment: MainAxisAlignment.center用于设置子组件在 Column垂直方向上的对齐方式。

属性值子组件排列效果
start顶部对齐(默认值)
center居中对齐
end底部对齐
Column(mainAxisAlignment: MainAxisAlignment.center, // 垂直居中对齐children: [Text('第一个子组件'),Text('第二个子组件'),Text('第三个子组件'),],
)

示例

// MainAxisAlignment.start(默认)
+----------------+
| Text1          |
| Text2          |
| Text3          |
+----------------+// MainAxisAlignment.center
+----------------+
|                |
|    Text1       |
|    Text2       |
|    Text3       |
|                |
+----------------+// MainAxisAlignment.end
+----------------+
|                |
|                |
| Text1          |
| Text2          |
| Text3          |
+----------------+

实现了容器位置调整和背景图片设置的功能:

import 'package:flutter/material.dart';void main() {runApp(const MyApp());
}class MyApp extends StatelessWidget {const MyApp({Key? key}) : super(key: key);@overrideWidget build(BuildContext context) {return MaterialApp(home: Scaffold(appBar: AppBar(title: const Text('Flutter Container Demo')),body: Container(// 设置背景图片decoration: const BoxDecoration(image: DecorationImage(image: NetworkImage('https://picsum.photos/1920/1080'), // 示例背景图fit: BoxFit.cover,),),child: Center(child: FractionallySizedBox(widthFactor: 0.8, // 容器宽度为屏幕宽度的80%child: Container(height: 200,margin: const EdgeInsets.only(top: 100), // 调整容器位置(向下偏移100像素)decoration: const BoxDecoration(color: Colors.red,borderRadius: BorderRadius.all(Radius.circular(12)), // 圆角效果),child: Column(mainAxisAlignment: MainAxisAlignment.center,children: [ElevatedButton(onPressed: () {},child: const Text('点击按钮'),),const SizedBox(height: 20),const Text('按钮下方的文字',style: TextStyle(color: Colors.white),),],),),),),),),);}
}
  • Container(width: 300):固定宽度(300 像素),在不同屏幕尺寸上可能显示异常(比如在小屏手机上溢出)。
  • FractionallySizedBox(widthFactor: 0.8):动态宽度(永远是父组件宽度的 80%),自动适配不同屏幕。
使用 Container(固定宽度)
Container(width: 300, // 无论屏幕多大,宽度永远是300像素height: 200,color: Colors.red,
)
使用 FractionallySizedBox(相对宽度)
FractionallySizedBox(widthFactor: 0.8, // 宽度是父组件宽度的80%child: Container(height: 200,color: Colors.red,),
)

http://www.dtcms.com/a/270189.html

相关文章:

  • 7月5号和6号复习和预习(C++)
  • 初识mysql(一)
  • 论文略读:UniPELT: A Unified Framework for Parameter-Efficient Language Model Tuning
  • 无人机报警器探测模块技术解析
  • HDLBits刷题笔记和一些拓展知识(十一)
  • 中文编程开发工具构件系列介绍——数值比较构件
  • 视频网站弹幕系统简易实现
  • Python语言+pytest框架+allure报告+log日志+yaml文件+mysql断言实现接口自动化框架
  • Android Handler机制与底层原理详解
  • RHA《Unity兼容AndroidStudio打Apk包》
  • 什么是2.5G交换机?
  • 【如何下载网页中的视频】
  • 【HarmonyOS】鸿蒙端云一体化开发入门详解 (一)
  • 零基础 Qt 6 在线安装教程
  • vue前置知识-end
  • 呼叫系统对接智能体能解决哪些问题?
  • exFAT文件系统mp4素材文件变0字节的恢复方法
  • Spring中过滤器和拦截器的区别及具体实现
  • ROS平台上使用C++实现A*算法
  • 3423. 循环数组中相邻元素的最大差值 — day97
  • MySQL 8.0 OCP 1Z0-908 题目解析(23)
  • 服务端渲染
  • VMware克隆虚拟机,模板机已提前设置了固定IP,克隆机需要修改的事项
  • Java项目:基于SSM框架实现的旅游协会管理系统【ssm+B/S架构+源码+数据库+毕业论文】
  • Web前端开发: :where(伪类函数选择器)
  • 软件设计与重构
  • docker部署单机gitlab
  • Pytorch实战——完整的模型训练套路2
  • GitOps实践指南:GitLab CI/CD + ArgoCD 实现 Kubernetes 自动化部署
  • 【AI大模型】深度学习正则化技术:Batch Normalization (BatchNorm) 详解