Center 中的 widthFactor 与 heightFactor 属性

简介: Center 中的 widthFactor 与 heightFactor 属性

flutter 的 center 组件大家都不陌生,有居中 child 的作用,但其中 的widthFactor 和 heightFactor 可能鲜有人用。下面我们一起来看下 这两个属性的作用。

没有加 heightFactor 的时候 center 的高度是尽量高,可以充满屏幕。


image.png

把下面的代码 copy 到 main.dart 执行查看效果

import 'package:flutter/material.dart';
void main() => runApp(const MyApp());
class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);
  @override
  Widget build(BuildContext context) {
    return Center(
        child: Container(
            color: Colors.blue,
            child: Center(
              child: Container(
                width: 100,
                height: 100,
                color: Colors.green,
              ),
            )));
  }
}
复制代码


增加了 heightFactor: 2 后,里面的center的高度变为 200。


image.png

@override
  Widget build(BuildContext context) { 
    return Center(   //1
        child: Container(  //2
            color: Colors.blue,
            child: Center(  //3
              //增加
              heightFactor: 2,
              child: Container( //4
                width: 100,
                height: 100,
                color: Colors.green,
              ),
            )));
  }
复制代码

widthFactor 效果也是一样的。

center widget 的特性: 如果没有 heightFactor与widthFactor的话,会尽量大。 上面的代码完整解释 一下

  1. 屏幕告诉 center ,你可以尽量大。于是center 充满屏幕
  2. center 告诉 container 你可以 小到0 也可以大到整个屏幕。 container 想,我自己没有定宽度,所以我要和我的孩子一样大。
  3. container 告诉 center ,你可以 大到充满屏幕。center 如果没有 heightFactor 就和屏幕一样高了。如果有 heightFactor,就只能是 孩子 高度的 2 倍。
  4. center 告诉 container 你可以任意大小,只要别超过屏幕。于是 Container 显示 100 * 100

绿色container的高度定下来后,center 的高度也定下来了 ,是 200, 于是蓝色 contaier的高度也定下来了 也是 200.


应用场景


那么,这两个属性有什么应用场景呢?

widthFactor 就直接的效果就把 center 定高宽,相当于 在 center 外加了一个 SizedBox。

下面的两段代码是等效的 ,明显第一段更简洁,少了一层。

Center(
   heightFactor: 2,
   child: Container(
     width: 100,
     height: 100,
     color: Colors.green,
   ),
 )));
复制代码
SizedBox(
  height: 200,
  child: Center(
    heightFactor: 2,
    child: Container(
      width: 100,
      height: 100,
      color: Colors.green,
    ),
  ))));
复制代码


有明确高宽需求的场景,都是 widthFactor 与 heightFactor应用场景。

最后补充一下,如果 Center受到父 widget 的 tight 约束  widthFactor 与 heightFactor 无效。


相关

  1. Align 也有 widthFactor 与 heightFactor 属性效果和 Center 一样,Center 继承自 Align。
  2. FractionallySizedBox  widthFactor 与 heightFactor 属性效果和 Center 一样
目录
相关文章
|
3月前
|
前端开发
前端基础(十二)_overflow属性、clear属性、vertical-align属性
本文详细介绍了CSS中的overflow属性、clear属性和vertical-align属性的用法和效果,并通过实例展示了如何控制元素内容溢出时的显示方式、清除浮动以及对齐行内元素和行内块元素。
83 1
|
3月前
box-shadow属性
box-shadow属性。
145 8
|
3月前
overflow属性
overflow属性。
41 0
|
7月前
Margin - 简写属性
Margin - 简写属性。
66 1
|
前端开发 程序员
【CSS】vertical-align属性
【CSS】vertical-align属性
|
容器
overflow属性详解
overflow是对溢出内容的处理
545 0
overflow属性详解
|
前端开发
display:box、display:flex实现多行文本垂直居中
display:box、display:flex实现多行文本垂直居中
288 0
display:box、display:flex实现多行文本垂直居中
|
前端开发 开发者
Border 属性 | 学习笔记
快速学习 Border 属性。
142 0
Border 属性 | 学习笔记
|
前端开发 Java 开发者
Display 属性 | 学习笔记
快速学习 Display 属性。
144 0