当前位置:   article > 正文

Flutter组件--AspectRatio(宽高比组件), FractionallySizedBox(百分比)_flutter aspectratio

flutter aspectratio

1.AspectRatio介绍(宽高比)

AspectRatio 主要的作用是调整子组件设定的宽高比,如播放视频时16:9或4:3等。

AspectRatio构造函数

  1. const AspectRatio({
  2. Key? key,
  3. required this.aspectRatio,
  4. Widget? child,
  5. }) : assert(aspectRatio != null),
  6. assert(aspectRatio > 0.0),
  7. // can't test isFinite because that's not a constant expression
  8. super(key: key, child: child);

 AspectRatio属性和说明

序列号字段属性描述
1aspectRatiodouble宽高比例(主要用来设定子组件的宽高比例)
2childWidget子组件(就是需要被设定宽高比例的子组件)

AspectRatio基本使用

AspectRatio首先会在布局限制条件允许的范围内尽可能的扩展,widget的高度是由宽度和比率决定的,类似于BoxFit中的contain,按照固定比率去尽量占满区域。

如果在满足所有限制条件过后无法找到一个可行的尺寸,AspectRatio最终将会去优先适应布局限制条件,而忽略所设置的比率。

  1. class MyApp extends StatelessWidget {
  2. const MyApp({super.key});
  3. @override
  4. Widget build(BuildContext context) {
  5. return AspectRatio(
  6. aspectRatio: 2 / 1,
  7. child: Container(
  8. color: Colors.red,
  9. ),
  10. );
  11. }
  12. }

我们可以看到红色视图的的高度只有宽度的一半.

2.FractionallySizedBox(百分比)

当我们需要一个控件的尺寸是相对尺寸时,比如当前按钮的宽度占父组件的70%,可以使用FractionallySizedBox来实现此效果.

FractionallySizedBox构造函数

  1. const FractionallySizedBox({
  2. Key? key,
  3. this.alignment = Alignment.center,
  4. this.widthFactor,
  5. this.heightFactor,
  6. Widget? child,
  7. }) : assert(alignment != null),
  8. assert(widthFactor == null || widthFactor >= 0.0),
  9. assert(heightFactor == null || heightFactor >= 0.0),
  10. super(key: key, child: child);

FractionallySizedBox属性和说明

序列号字段属性描述
1alignmentAlignmentGeometry子组件的对齐方式
2widthFactordouble宽度系数(子组件相对于父组件的宽度系数)
3heightFactordouble高度系数(子组件相对于父组件的高度系数)
4childWidget子组件

FractionallySizedBox基本使用

  1. import 'package:flutter/material.dart';
  2. class AspectRatioExample extends StatefulWidget {
  3. @override
  4. _AspectRatioExampleState createState() => _AspectRatioExampleState();
  5. }
  6. class _AspectRatioExampleState extends State<AspectRatioExample> {
  7. @override
  8. Widget build(BuildContext context) {
  9. return Scaffold(
  10. appBar: AppBar(
  11. title: Text("AspectRatioExample"),
  12. ),
  13. body: Container(
  14. color: Colors.blue,
  15. alignment: Alignment.center,
  16. width: 150,
  17. height: 150.0,
  18. child: FractionallySizedBox(
  19. alignment: Alignment.topLeft,
  20. widthFactor: 1.5,
  21. heightFactor: 0.5,
  22. child: new Container(
  23. color: Colors.red,
  24. ),
  25. ),
  26. ),
  27. );
  28. }
  29. }

FractionallySizedBox效果展示

我们看到子组件红色盒子是父组件蓝色盒子的1.5倍,所以超出.

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/227305
推荐阅读
相关标签
  

闽ICP备14008679号