Flutter 容器盒子模型的使用示例

在讲 Flutter 的盒子模型前,先看看HTML 中的盒子模型。如下图所示,一个页面元素包括了与父级容器的外边距(margin),自身内容与边框的内边距(padding)。外边距 和内边距都可以通过 LTRB (左、上、右、下)单独设定四个方向的大小。

Flutter 的盒子模型和 HTML 的是一样的,而通用的容器 Container 就相当于是一个通用的容器,和 HTML 的 div 标签一样。如果要控制一个元素的尺寸,外边距,内边距和边框,最通用的做法是使用 Container 容器将元素包裹。当然 Flutter 也提供了一些更为具体的布局组件方便开发,例如 :

  • SizedBox:指定尺寸的容器。
  • ConstaintedBox:带约束条件的容器,如限制最小最大宽度和高度。
  • DecoratedBox:带装饰的容器,比如渐变色。
  • RotatedBox:旋转一定角度的容器。

上面这些组件实际都可以通过 Container 的参数设置完成,只是开发的时候使用具体的容器可以减少组件参数。

样例代码

下面就使用一个具体的例子来说明盒子模型的具体概念,由于这里不涉及数据变化引起界面变化,因此直接使用 Stateless 无状态组件,代码如下:

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter 盒子模型',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        appBar: AppBar(
          title: Text('盒子模型'),
        ),
        body: Center(
          child: Container(
            width: 300,
            height: 300,
            color: Colors.blue,
            child: Container(
              color: Colors.red,
              margin: EdgeInsets.fromLTRB(10, 0, 20, 30),
              child: Container(
                margin: EdgeInsets.fromLTRB(10, 10, 10, 10),
                color: Colors.white60,
                child: Text('这是一长段文字,这是一长段文字,这是一长段文字,这是一长段文字,这是一长段文字,这是一长段文字'),
                padding: EdgeInsets.fromLTRB(10, 10, 10, 10),
              ),
            ),
          ),
        ),
      ),
    );
  }
}

这里在 body里的组件层级如下:

  • Center:居中组件。

    • Container:300 x 300大小,颜色为蓝色,为最外层组件。

      • Container:没指定大小(通过盒子模型约束控制大小),与父级组件的外边距为左10,上0,右20,下30,颜色为红色。
      • Container:没指定大小,与父级组件的上下左右外边距均为10,内边距上下左右均为10,颜色为白色。
      • Text:显示多行文本,用于展示内边距效果。

运行后的界面如下图所示,可以看到和预期一致。

以上就是Flutter 容器盒子模型的使用示例的详细内容,更多关于Flutter 容器的盒子模型的资料请关注我们其它相关文章!

(0)

相关推荐

  • Flutter 常用插件汇总

    DIO网络请求框架 提起 Flutter 的网络框架,就不得不提 DIO,而且令人自豪的是 DIO 是国人开发的哦!DIO 作为一个网络框架实现了全部的网络请求,包括 GET.POST.PUT.PATCH.DELETE等,同时还支持拦截器,错误捕获和文件下载.借助 DIO,可以快速完成 Flutter App 与后端的数据交互.示例代码如下: Response response; var dio = Dio(); response = await dio.get('/test?id=12&nam

  • Flutter 容器盒子模型的使用示例

    在讲 Flutter 的盒子模型前,先看看HTML 中的盒子模型.如下图所示,一个页面元素包括了与父级容器的外边距(margin),自身内容与边框的内边距(padding).外边距 和内边距都可以通过 LTRB (左.上.右.下)单独设定四个方向的大小. Flutter 的盒子模型和 HTML 的是一样的,而通用的容器 Container 就相当于是一个通用的容器,和 HTML 的 div 标签一样.如果要控制一个元素的尺寸,外边距,内边距和边框,最通用的做法是使用 Container 容器将元

  • Flutter 如何正确显示SnackBar

    简介 官方API文档Scaffold的of方法说明有说明调用Scaffold.of方法是在Scallfold的子组件的Build方法中,也就是不能直接在构建Scaffold的build方法里调用,否则会抛异常. Typical usage of the Scaffold.of function is to call it from within the build method of a child of a Scaffold. 通常为显示一个SnackBar需要构建一个Builder,通过Bu

  • 如何使用Flutter发布安卓应用

    设置应用的名称,包名.应用图标和启动 安卓的应用资源配置在main/AndroidManifest.xml中设置,文件内容如下: <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.gesture_demo"> <!-- io.flutter.app.FlutterApplication is an android.app

  • flutter Container容器实现圆角边框

    本文实例为大家分享了flutter Container容器实现圆角边框的具体代码,供大家参考,具体内容如下 在这里使用 Container 容器来实现圆角矩形边框效果 1 圆角矩形边框 Container( margin: EdgeInsets.only(left: 40, top: 40), //设置 child 居中 alignment: Alignment(0, 0), height: 50, width: 300, //边框设置 decoration: new BoxDecoration

  • Flutter时间轴Timeline的实现

    首先看看时间轴效果图 实现的难点就是左边的时间线,右边的事件说白了就是一个ListView,仔细观察一下会发现圆圈在ListView的一个item上,想明白这些我们就可以把圆圈和右边的事件作为一个listitem实现,左边的竖线可以有两种实现方法 1)listItem是一个Row,Row里含有一条竖线 2)Stack实现,Stack有两个child widget,一个是竖线,一个是ListView 本文简单用第二种来实现它,废话少说先上代码 @override Widget build(Buil

  • flutter实现更新弹窗内容例子(亲测有效)

    什么是Flutter Flutter 是谷歌推出的开发移动UI框架,可以快速的在IOS和Android上构建高质量的原生用户界面. Flutter可以与现有的代码一起工作,并且Flutter是完全免费的,开源的. 总结来说: Flutter是一款移动应用程序SDK,包含框架.widget和工具,为开发人员提供了一种在Android和iOS上构建和部署精美移动应用程序的简单高效的方式. Flutter的优势 快速开发 毫秒级的热重载,修改后,您的应用界面会立即更新.使用丰富的.完全可定制的widg

  • Flutter 构建一个常用的页面框架

    最终实现的结果如上图所示,顶部共用一个导航栏,底部有四个图标导航,点击对应的图标跳转到对应的页面. 图标准备 本次例程需要4个图标,2种颜色,可以从 iconfont 中找到自己需要的图标下载不同的颜色使用.然后在 pubspec.yaml 中的 assets 指定素材所在目录.需要注意的是如果是 png 文件直接指定整个目录即可,但如果是 jpg 格式,则需要同时指定文件名及后缀. BottomNavigationBar 简介 BottomNavigationBar的构造函数如下: Botto

  • Flutter实现容器组件、图片组件 的代码

    •容器组件 容器组件(Container)可以理解为在Android中的RelativeLayout或LinearLayout等,在其中你可以放置你想布局的元素控件,从而形成最终你想要的页面布局.当然Flutter中的容器组件作为一个"容器",肯定会有一些给我们提供一些属性来约束我们容器内的组件,下面介绍一下容器组件(Container)的一些常用属性及描述: 属性名 类型 说明 key Key Container唯一标识符,用于查找更新 alignment AlignmentGeom

  • Flutter 创建私有公共插件的步骤

    创建package 通过以下命令行创建一个package flutter create --template=package plugins 创建演示代码(可选) 在test文件中,对存dart库进行单元测试,但是在涉及页面等功能,需要有一个demo,需要在工程内部创建一个demo. 如果要发布到公有pub上,需要写上示例代码,方便别人知道如何使用. cd plugins flutter create example 得到的目录结构如下所示: |____CHANGELOG.md |____LIC

  • Flutter布局模型之层叠定位

    Stack即层叠布局控件,能够将子控件层叠排列. Stack控件的每一个子控件都是定位或不定位,定位的子控件是被Positioned控件包裹的.Stack控件本身包含所有不定位的子控件,其根据alignment定位(默认为左上角).然后根据定位的子控件的top.right.bottom和left属性将它们放置在Stack控件上. import 'package:flutter/material.dart'; class LayoutDemo extends StatelessWidget { @

随机推荐