美文网首页
4.1 容器类Widget-Padding

4.1 容器类Widget-Padding

作者: lltree | 来源:发表于2018-12-31 15:16 被阅读18次

原文在此,这里只为学习

容器类Widget和布局类Widget区别

  • 共同点
    容器类Widget和布局类Widget都作用于其子Widget,不同的是:

  • 异同点
    1 布局类widget一般都需要接收一个widget数组(children),他们直接或间接继承自(或包含)MultiChildRenderObjectWidget ;而容器类Widget一般只需要接受一个子Widget(child),他们直接或间接继承自(或包含)SingleChildRenderObjectWidget。
    2 布局类Widget是按照一定的排列方式来对其子widget进行排列;而容器类Widget一般只是包装其子Widget,对其添加一些修饰(补白或背景色等)、变换(旋转或剪裁等)、或限制(大小等)。

Padding

Padding给其子节点添加内边距

class Padding extends SingleChildRenderObjectWidget {
  ......
  const Padding({
    Key key,
    @required this.padding,
    Widget child,
  }) : assert(padding != null),
       super(key: key, child: child);
  ......
}

EdgeInsets

我们看看EdgeInsets提供的便捷方法:

  • fromLTRB(double left, double top, double right, double bottom):分别指定四个方向的补白。
  • all(double value) : 所有方向均使用相同数值的补白。
  • only({left, top, right ,bottom }):可以设置具体某个方向的补白(可以同时指定多个方向)。
  • symmetric({ vertical, horizontal }):用于设置对称方向的补白,vertical指top和bottom,horizontal指left和right。

示例:


import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
      
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}
class MyHomePage extends StatelessWidget{

  @override
  Widget build(BuildContext context) {

    return Scaffold(
      appBar: AppBar(
        // Here we take the value from the MyHomePage object that was created by
        // the App.build method, and use it to set our appbar title.
        title: Text("测试Padding"),
      ),
     
      body: Align(
        alignment: Alignment.centerLeft,
        child: PaddingTestRoute()
      ),
    );
  }
}

class PaddingTestRoute extends StatelessWidget{

    @override
    Widget build(BuildContext context){

      return Padding(
        padding: EdgeInsets.all(15.0),
        child: Column(
          
            mainAxisAlignment:MainAxisAlignment.start ,

            crossAxisAlignment: CrossAxisAlignment.start,
            children: <Widget>[
              Padding(
                padding: const EdgeInsets.only(left: 8),
              
                child: Container(
                  width: 100,
                  height: 100,
                  color: Colors.red,
                ),
              ),
              Container(
                  width: 100,
                  height: 100,
                  color: Colors.green,
                ),
            ],
        ),
      );
    }
}


其中:

    选用Align 为了方便定义alignment的起始位置
    如果用center则子Widget使用Column 即使设置了
    crossAxisAlignment: CrossAxisAlignment.start,
    也无法让Column从左侧开始布局

相关文章

  • 4.1 容器类Widget-Padding

    原文在此,这里只为学习 容器类Widget和布局类Widget区别 共同点容器类Widget和布局类Widget都...

  • 第四章:操作Docker容器

    4.1创建容器 1.新建容器 2.启动容器 3.新建并启动容器 4.守护态运行(后台运行) 添加 -d 参数来实现...

  • 2018-06-21 基础构建模块

    5.1 同步容器类 同步容器类包括Vector和Hashtable 5.1.1 同步容器类的问题 同步容器类都是线...

  • 4.Redis企业级实战

    4.1 单机Redis 4.1.1 Redis安装 进入docker容器 docker run -p 80:80 ...

  • 《Java并发编程实战》学习笔记--并发容器类

    《Java并发编程实战》学习笔记--同步容器类前面介绍了同步容器类,下面来说说并发容器类。 同步容器类:将所有对容...

  • 4.1 类加载

    类的生命周期:加载,连接,初始化,使用,卸载。连接包括验证,准备,解析。

  • ReentrantLock你了解多少?

    内容简介 ReentrantLock类的使用。ReentrantReadWriteLock类的使用。 4.1 使用...

  • k8s运行容器之Job(四)

    Job 容器按照持续运行的时间可分为两类:服务类容器和工作类容器。 服务类容器通常持续提供服务,需要一直运行,比如...

  • K8S实战(八)| Job 和 CronJob

    前言 容器分为两类 在线业务 - 服务类容器 需要持续不中断的提供服务,容器需要一直运行 离线业务 - 工作类容器...

  • iOS--拷贝

    首先说明两个概念 容器类对象:系统的容器类对象,指NSArray,NSDictionary等 非容器类对象:系统的...

网友评论

      本文标题:4.1 容器类Widget-Padding

      本文链接:https://www.haomeiwen.com/subject/lcoilqtx.html