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

 更新时间:2021年05月19日 11:46:01   作者:岛上码农  
在网页开发中,有盒子模型,号称统一三端的 Flutter 也不例外,而且和 HTML 的盒子模型几乎是一样的,本篇文章通过简单的例子说明一下 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 容器的盒子模型的资料请关注脚本之家其它相关文章!

相关文章

  • Android如何从实现到封装一个MVP详解

    Android如何从实现到封装一个MVP详解

    原生的 MVC 框架遇到大规模的应用,就会变得代码难读,不好维护,无法测试的囧境。因此,Android 开发方面也有很多对应的框架来解决这些问题。所以这篇文章主要给大家介绍了关于Android如何从实现到封装一个MVP的相关资料,需要的朋友可以参考下。
    2017-09-09
  • Android ExpandableListView长按事件的完美解决办法

    Android ExpandableListView长按事件的完美解决办法

    本篇文章是对Android中ExpandableListView长按事件的解决方法进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • Android和PC端通过局域网文件同步

    Android和PC端通过局域网文件同步

    这篇文章主要为大家详细介绍了Android和PC端通过局域网文件同步的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • Android Studio4.0导入OpenCv4.3.0的方法步骤

    Android Studio4.0导入OpenCv4.3.0的方法步骤

    这篇文章主要介绍了Android Studio4.0导入OpenCv4.3.0的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • Android实现购物车及其他功能的角标

    Android实现购物车及其他功能的角标

    本文主要介绍了Android实现购物车及其他功能的角标的相关知识。具有很好的参考价值。下面跟着小编一起来看下吧
    2017-04-04
  • Android实现消息总线的几种方式详解

    Android实现消息总线的几种方式详解

    关于Android消息传递方式比较多,一般的系统原生实现方式比如Handler 、自定义广播、接口回调,以及三方工具 EventBus 、RxBus 等,下面这篇文章主要给大家介绍了关于Android实现消息总线的几种方式,需要的朋友可以参考下
    2022-06-06
  • Android原生侧滑控件DrawerLayout使用方法详解

    Android原生侧滑控件DrawerLayout使用方法详解

    这篇文章主要为大家详细介绍了Android原生侧滑控件DrawerLayout的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • Android 使用AsyncTask实现多线程断点续传

    Android 使用AsyncTask实现多线程断点续传

    本文将详细讲解如何使用AsyncTask来实现多线程的断点续传下载功能,感兴趣的朋友跟随脚本之家小编一起学习吧
    2018-05-05
  • Ubuntu16.04 LTS 下安装 Android Studio 2.2.2 的详细步骤

    Ubuntu16.04 LTS 下安装 Android Studio 2.2.2 的详细步骤

    这篇文章主要介绍了Ubuntu16.04 LTS 下安装 Android Studio 2.2.2 的详细步骤,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-11-11
  • Android自定义闹钟功能

    Android自定义闹钟功能

    这篇文章主要为大家详细介绍了Android自定义闹钟功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-02-02

最新评论