Flutter Container容器组件实战案例

news2024/11/25 14:56:26

The Container widget is your design toolkit. It’s like the master builder that helps you structure and style your UI elements with precision. Whether you’re creating simple designs or complex layouts, the Container is your trusty tool for the job.

“容器”小部件是您的设计工具包。它就像一个主构建器,可以帮助您精确地构建和样式UI元素。无论您是创建简单的设计还是复杂的布局,“容器”都是您值得信赖的工具。

Step 1: Set Up Your Environment

步骤1:设置环境

Before we dive into creating a Container, make sure you have a Flutter project set up. If you don’t have one, create a new project or use an existing one.

在我们开始创建“容器”之前,请确保您已经设置了一个Flutter项目。如果没有,创建一个新项目或使用现有的项目。

Step 2: Creating a Basic Container

步骤2:创建一个基本容器

Let’s start by creating a basic Container. Imagine you’re designing a card element for a weather app. You want a card that displays the temperature for the day. Here’s how you can use a Container to achieve this:

让我们从创建一个基本的“容器”开始。假设你正在为一个天气应用程序设计一个卡片元素。你想要一个显示当天温度的卡片。以下是如何使用“容器”来实现这一点:

Open your Flutter project in your preferred code editor.

在您首选的代码编辑器中打开您的Flutter项目。

Locate the main function in your main.dart file.

找到main.dart文件。

Step 3: Add the Code Snippet

步骤3:添加代码片段

Replace or add the following code snippet in your main.dart file:

在您的main.dart文件主程序中替换或添加以下代码片段:

import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  
  Widget build(BuildContext context) {
    return MaterialApp(
      title: '第一个APP',
      home: Scaffold(
        // 顶部导航栏
        appBar: AppBar(
          title: const Text("文本组件, 导航标题"),
        ),
        // 内容
        body: Container(
          width: 200, // 宽度
          height: 100, // 高度
          color: Colors.blue, // 字体颜色
          child: const Text(
            "今天的气温是: 25℃",
            style: TextStyle(
              color: Colors.white,
              fontSize: 18,
            ),
          ), // 子容器
        ),
      ),
    );
  }
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Step 4: Customize Your Container

步骤4:自定义容器

The power of the Container lies in its customization options. You can tweak various properties to achieve the desired design:

  • alignment: Align the child within the Container.
  • padding: Add space inside the Container.
  • margin: Set spacing around the Container.
  • decoration: Apply visual effects like borders and shadows.

“容器”的强大之处在于它的定制选项。您可以调整各种属性来实现所需的设计:

  • ’ alignment’: 在’ Container '内对齐子元素。
  • ’ padding’: 在’ Container '内添加空间。
  • margin: 设置“Container”周围的间距。
  • “decoration”: 应用视觉效果,如边界和阴影。

Here’s an example of customizing your Container:

下面是一个定制“容器”的例子:

import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  
  Widget build(BuildContext context) {
    return MaterialApp(
      title: '第一个APP',
      home: Scaffold(
        appBar: AppBar(
          title: const Text("文本组件, 导航标题"),
        ),
        body: Container(
          width: 200,
          height: 100,
          color: Colors.blue,
          padding: const EdgeInsets.all(16),
          margin: const EdgeInsets.symmetric(vertical: 10),
          child: const Text(
            "今天的气温是: 25℃",
            style: TextStyle(
              color: Colors.white,
              fontSize: 18,
            ),
          ), // 子容器
        ),
      ),
    );
  }
}

You might have noticed the const modifier applied to the widgets. This is a powerful optimization technique in Flutter. When a widget is declared as const, Flutter ensures that the widget is created only once during the lifetime of the app. This can significantly improve your app’s performance by reducing unnecessary widget recreations.

您可能已经注意到应用于小部件的const修饰符。这是Flutter中一个强大的优化技术。当一个小部件被声明为const时,Flutter确保该小部件在应用的生命周期中只被创建一次。这可以通过减少不必要的小部件创建来显著提高应用的性能。

Step 5: Embrace Responsive Design

步骤5:接受响应式设计

Flutter’s Container is your partner in responsive design. You can use properties like width and height to set fixed dimensions, but you can also use MediaQuery to make your Container responsive to different screen sizes:

Flutter的“容器”是您在响应式设计中的合作伙伴。你可以使用像“宽度”和“高度”这样的属性来设置固定的尺寸,但你也可以使用“MediaQuery”来让你的“容器”响应不同的屏幕尺寸:

width: MediaQuery.of(context).size.width * 0.8,
height: MediaQuery.of(context).size.height * 0.8,

完整代码:

import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  
  Widget build(BuildContext context) {
    return MaterialApp(
      title: '第一个APP',
      home: Scaffold(
        appBar: AppBar(
          title: const Text("文本组件, 导航标题"),
        ),
        body: Container(
          width: MediaQuery.of(context).size.width * 0.8,
          height: MediaQuery.of(context).size.height * 0.8,
          color: Colors.blue,
          padding: const EdgeInsets.all(16),
          margin: const EdgeInsets.symmetric(vertical: 10),
          child: const Text(
            "今天的气温是: 25℃",
            style: TextStyle(
              color: Colors.white,
              fontSize: 18,
            ),
          ), // 子容器
        ),
      ),
    );
  }
}

Step 6: Play and Experiment

第六步:玩和实验

Now that you’ve created a basic Container with some customization, don’t hesitate to experiment. Change colors, sizes, and styles to see the impact on your design.

现在您已经创建了一个基本的“容器”,并进行了一些定制,请不要犹豫进行试验。更改颜色、大小和样式,看看对设计的影响。

Step 7: Run Your App

步骤7:运行应用程序

Save your changes and run your Flutter app using the command in your terminal:

保存更改并在终端中使用以下命令运行Flutter应用程序:

flutter run

Remember, the Container is just one of the many layout widgets Flutter offers. As you explore further, you’ll discover widgets like Column, Row, and Stack, which allow you to build complex and dynamic layouts.

请记住,“容器”只是Flutter提供的众多布局小部件之一。当您进一步探索时,您将发现诸如“列”,“行”和“堆栈”之类的小部件,它们允许您构建复杂和动态的布局。

So go ahead, harness the power of the Container to design stunning UI elements in your Flutter app. Your creativity is the limit, and Flutter’s layout widgets are your tools to bring your vision to life. Happy coding!

因此,继续前进,利用“容器”的力量在您的Flutter应用程序中设计令人惊叹的UI元素。您的创造力是极限,而Flutter的布局小部件是您的工具,将您的愿景带入生活。编码快乐!

Feel free to share a screenshot of your design on social media and tag me—I’d love to see your creations!

请随意在社交媒体上分享你的设计截图并标记我-我很想看到你的创作!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2221323.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

全能大模型GPT-4o体验和接入教程

GPT-4o体验和接入教程 前言一、原生API二、Python LangchainSpring AI总结 前言 Open AI发布了产品GPT-4o,o表示"omni",全能的意思。 GPT-4o可以实时对音频、视觉和文本进行推理,响应时间平均为 320 毫秒,和人类之间对…

【C++篇】深度解析类与对象(上)

目录 引言 一、类的定义 1.1类定义的基本格式 1.2 成员命名规范 1.3 class与struct的区别 1.4 访问限定符 1.5 类的作用域 二、实例化 2.1 类的实例化 2.2 对象的大小与内存对齐 三、this 指针 3.1 this指针的基本用法 3.2 为什么需要this指针? 3.3 t…

Java毕业设计 基于SpringBoot发卡平台

Java毕业设计 基于SpringBoot发卡平台 这篇博文将介绍一个基于SpringBoot发卡平台,适合用于Java毕业设计。 功能介绍 首页 图片轮播 商品介绍 商品详情 提交订单 文章教程 文章详情 查询订单  查看订单卡密 客服   后台管理 登录 个人信息 修改密码 管…

成都爱尔胡建斌院长讲解年纪大眼花?小心黄斑变性!

中老年朋友觉得年龄增加后,眼睛出现模糊是常态,但是眼花不止“老花眼”一种,要小心的是眼底病变! 眼花的形式有很多种,如果视线中间出现暗点视物变得模糊,很难看清周围的人脸,在看书看手机这种…

MATLAB(Octave)混电动力能耗评估

🎯要点 处理电动和混动汽车能耗的后向和前向算法模型(simulink),以及图形函数、后处理函数等实现。构建储能元数据信息:电池标称特性、电池标识符等以及静止、恒定电流和恒定电压等特征阶段。使用电流脉冲或要识别的等效电路模型类型配置阻抗…

jmeter学习(6)逻辑控制器-循环

循环执行 1、循环读取csv文件的值 2、foreach 读取变量,变量数字后缀有序递增,通过counter实现 ${__V(typeId${typeIdNum})} beansell断言 String typeIdNum vars.get("typeIdNum"); String response prev.getResponseDataAsString(); …

MAC 安装HomeBrew-亲自尝试,100%会成功

文章来自这里: https://zhuanlan.zhihu.com/p/620975942 安装指令: /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"执行完成后,输入下列命令验证 brew --version

AcWing 875:快速幂

【题目来源】https://www.acwing.com/problem/content/877/【题目描述】 给定 组 ,对于每组数据,求出 的值。【输入格式】 第一行包含整数 。 接下来 行,每行包含三个整数 。【输出格式】 对于每组数据,输出一个结果&#xff0…

初阶数据结构【3】--单链表(比顺序表还好的一种数据结构!!!)

本章概述 前情回顾单链表实现单链表彩蛋时刻!!! 前情回顾 咱们在上一章博客点击:《顺序表》的末尾,提出了一个问题,讲出了顺序表的缺点——有点浪费空间。所以,为了解决这个问题,我…

计算机网络-RSTP快速生成树基础概念

一、STP概念复习 在之前的学习中我们已经学习了STP的概念与作用。参考文章:计算机网络-生成树基础 STP(Spanning Tree Protocol,生成树协议) 是一种用于在局域网中消除数据链路层物理环路的协议。主要作用是防止交换机冗余链路产生…

app端文章列表查询-详细教程(上)

app端文章列表查询 一、数据库方面 有关文章的表垂直拆分成了三张表:文章基本信息表(字段有文章id、文章作者、文章标题、发布时间等)、文章配置表(字段有文章id、文章是否可评论、文章可转发、是否已下架、是否已删除等&#x…

MySQL 基础查询

1、DISTINCT select DISTINCT EMPLOYEE_ID ,FIRST_NAME from employees 按照ID去重,DISTINCT的字段要放在前面,不会再继续在FIRST_NAME上去重判断; 如果需要多字段去重,需要用到group by,这个后面讲; …

【Fargo】11: pacing 参数不生效:同步调整采集码率

发送侧参数改变 接收测没感觉到 还是2秒收到60个不变: 果然,发送侧的参数设置没生效 发送的码率终于正确了

【C++、数据结构】二叉排序树(二叉查找树、二叉搜索树)(图解+完整代码)

目录 [⚽1.什么是二叉排序树] [🏐2.构建二叉排序树] [🏀3.二叉排序树的查找操作] [🥎4.二叉排序树的删除] [🎱5.完整代码] ⚽1.什么是二叉排序树 二叉搜索树又称二叉排序树,它或者是一棵空树,或者是…

【慕伏白教程】将 Windows11 装进口袋 -- 便携式 Windows 11 制作教程

目录 下载 Windows 11 镜像下载 Rufus开始安装 Windows 11 下载 Windows 11 镜像 打开微软 Windows 11 官方下载网站,找到 下载适用于 x64 设备的 Windows 11 磁盘映像 (ISO) 根据个人情况选择要下载的磁盘镜像,选择多版本 ISO 的话可在安装系统开始时进…

多IP连接

一.关闭防火墙 systemctl stop firewalld setenforce 0 二.挂在mnt mount /dev/sr0 /mnt 三.下载nginx dnf install nginx -y 四.启动nginx协议 systemctl start nginx 五.修改协议 vim /etc/nginx/nginx.conf 在root前加#并且下一行添加 root /www:(浏…

基于图像拼接开题报告

选题的背景与意义 在日常生活中,使用普通相机获取宽视野的场景图像时,必须通过调节相机的焦距才可以提取完整的场景。由于相机的分辨率有限,拍摄场景越大,得到的图像分辨率就越低,因此只能通过缩放相机镜头减小拍摄的…

应对 .DevicData-X-XXXXXXXX 勒索病毒:防御与恢复策略

引言 随着信息技术的快速发展,网络安全问题愈发严峻。勒索病毒作为一种恶性网络攻击手段,已成为企业和个人面临的重大威胁之一。尤其是 .DevicData-X-XXXXXXXX 勒索病毒,其通过加密用户数据并勒索赎金,给受害者带来了巨大的经济损…

dolphinscheduler创建工作流及工作流中DataX的使用(简单操作)

一、在项目管理中创建项目:点击创建项目 用哪个用户登录的,所属用户就是哪个,直接输入项目名即可 二、点击项目,在项目中创建工作流,用DataX同步数据 按照图片的步骤依次填写完成,注意 图片中的第九步是写…

个税自然人扣缴客户端数据的备份与恢复(在那个文件夹)

一,软件能够正常打开,软件中的备份与恢复功能 1,备份 您按照下面的方法备份一下哦~ 进入要备份的自然人软件,点击左侧系统设置→→系统管理→→备份恢复; 在备份设置里,点击“备份到选择路径”,…