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 一样
目录
相关文章
|
2月前
|
前端开发
前端基础(十二)_overflow属性、clear属性、vertical-align属性
本文详细介绍了CSS中的overflow属性、clear属性和vertical-align属性的用法和效果,并通过实例展示了如何控制元素内容溢出时的显示方式、清除浮动以及对齐行内元素和行内块元素。
63 1
|
2月前
position有哪些属性值
position有哪些属性值
CSS3【display: flex;】与【align-items: 侧轴对齐方式;】的使用
CSS3【display: flex;】与【align-items: 侧轴对齐方式;】的使用
78 0
|
前端开发 程序员
【CSS】vertical-align属性
【CSS】vertical-align属性
CSS3 【display: flex;】与【align-self: 可覆盖父元素设置的algin-items;】的使用
CSS3 【display: flex;】与【align-self: 可覆盖父元素设置的algin-items;】的使用
53 0
CSS3 【display: flex;】与【align-self: 可覆盖父元素设置algin-items;】的使用
CSS3 【display: flex;】与【align-self: 可覆盖父元素设置algin-items;】的使用
75 0
|
前端开发
display:box、display:flex实现多行文本垂直居中
display:box、display:flex实现多行文本垂直居中
270 0
display:box、display:flex实现多行文本垂直居中
|
前端开发
css中 vertical-align 属性的应用和案例
vertical-align 属性应用 css的 vertical - align 属性使用场景:经常用于设置图片或者表单(行内块元素)和文字垂直对齐。 官方解释:用于设置一个元素的垂直对齐方式,但是它只针对于行内元素或者行内块元素有效。
109 0
css中 vertical-align 属性的应用和案例