【布局 widget】Flutter LayoutBuilder

简介: LayoutBuilder 构建一个依赖于 parent widget 大小的 widget tree。

LayoutBuilder 介绍

与 Builder widget 类似,不同的是框架在布局时调用 LayoutBuilder 的 builder 函数并提供 parent widget 的约束。如果 parent 不依赖于 child intrinsic size,child 可以根据 LayoutBuilder 传过来的 constrains 灵活决定自己的大小。最终 LayoutBuilder 的尺寸 和 child 一样大。

使用 LayoutBuilder

LayoutBuilder 的应用场景有两个

  1. 根据 constrains 来做响应式布局。
 LayoutBuilder(builder: (context, constrains) {
      return Row(
        children: [
          Container(color: Colors.green,width: 150,height: 100,),
          if(constrains.maxWidth>200)
            Container(color: Colors.blue,width:150,height: 100 ,
        )
        ],
      );

  });

在本例中,当 宽度小于 200 时,只有 绿色块,当宽度大于 200 时除了绿色块还会显示蓝色块。

  1. 开发时获取 constrains 信息,方便调试。

比如我们想知道 Row 下面的 绿色块的约束信息。

 Row(
        children: [Container(color: Colors.green)],
    )

可以加上 LayoutBuilder 把约束信息打印出来。

return Row(
        children: [
          LayoutBuilder(builder:((context, constains) {
            print(constrains);
            return Container(color: Colors.green,);
          }))
        ],
      );

拿到约束信息就可以方便的排查问题了。

今天就到这里了,谢谢观看。

目录
相关文章
|
3月前
|
编解码 前端开发 开发者
【Flutter前端技术开发专栏】Flutter中的响应式设计与自适应布局
【4月更文挑战第30天】Flutter框架助力移动应用实现响应式设计与自适应布局,通过层次化布局系统和`Widget`树管理,结合`BoxConstraints`定义尺寸范围,实现自适应。利用`MediaQuery`获取设备信息,调整布局以适应不同屏幕。`FractionallySizedBox`按比例设定尺寸,`LayoutBuilder`动态计算布局。借助这些工具,开发者能创建跨屏幕尺寸、方向兼容的应用,提升用户体验。
98 0
【Flutter前端技术开发专栏】Flutter中的响应式设计与自适应布局
|
3月前
|
开发框架 前端开发 数据安全/隐私保护
【Flutter 前端技术开发专栏】Flutter 中的布局与样式设计
【4月更文挑战第30天】本文探讨了Flutter的布局和样式设计,关键点包括:1) 布局基础如Column、Row和Stack用于创建复杂结构;2) Container、Center和Expanded等常用组件的作用;3) Theme和Decoration实现全局样式和组件装饰;4) 实战应用如登录界面和列表页面的构建;5) 响应式布局利用MediaQuery和弹性组件适应不同屏幕;6) 性能优化,避免过度复杂设计。了解并掌握这些,有助于开发者创建高效美观的Flutter应用。
86 0
【Flutter 前端技术开发专栏】Flutter 中的布局与样式设计
|
1月前
|
容器
flutter 布局管理【详解】
flutter 布局管理【详解】
21 3
|
1月前
Flutter-自定义折叠流布局实现
Flutter-自定义折叠流布局实现
28 0
|
1月前
Flutter-底部弹出框(Widget层级)
文章描述了如何在Flutter中使用DraggableScrollableSheet创建一个底部弹出框,同时保持其可手势滑动关闭。作者遇到问题并提出对原控件进行扩展,以支持头部和列表布局的滑动关闭功能。
70 0
|
2月前
Flutter StreamBuilder 实现局部刷新 Widget
Flutter StreamBuilder 实现局部刷新 Widget
22 0
|
3月前
|
Android开发
Flutter完整开发实战详解(六、 深入Widget原理),2024百度Android岗面试真题收录解析
Flutter完整开发实战详解(六、 深入Widget原理),2024百度Android岗面试真题收录解析
|
3月前
|
开发框架 前端开发 搜索推荐
【Flutter前端技术开发专栏】Flutter中的自定义Widget与渲染流程
【4月更文挑战第30天】探索Flutter的自定义Widget与渲染流程。自定义Widget是实现复杂UI设计的关键,优点在于个性化设计、功能扩展和代码复用,但也面临性能优化和复杂性管理的挑战。创建步骤包括设计结构、定义Widget类、实现构建逻辑和处理交互。Flutter渲染流程涉及渲染对象树、布局、绘制和合成阶段。实践案例展示如何创建带渐变背景和阴影的自定义按钮。了解这些知识能提升应用体验并应对开发挑战。查阅官方文档以深入学习。
49 0
【Flutter前端技术开发专栏】Flutter中的自定义Widget与渲染流程
|
3月前
|
JavaScript 前端开发 开发者
【Flutter前端技术开发专栏】Flutter中的Widget与状态管理
【4月更文挑战第30天】本文探讨了Flutter的Widget和状态管理。Widget是Flutter构建UI的基础,分为有状态和无状态两种。状态管理确保UI随应用状态变化更新,影响应用性能和可维护性。文章介绍了`setState`、`Provider`、`Riverpod`、`Bloc`和`Redux`等状态管理方法,并通过计数器应用展示了其实现。选择合适的状态管理策略对高效开发至关重要。
37 0
【Flutter前端技术开发专栏】Flutter中的Widget与状态管理
|
3月前
|
编解码 算法 开发者
Flutter的布局系统:深入探索布局Widget与布局原则
【4月更文挑战第26天】Flutter布局系统详解,涵盖布局Widget(Row/Column、Stack、GridView/ListView、CustomSingleChildLayout)和布局原则(弹性布局、约束优先、流式布局、简洁明了)。文章旨在帮助开发者理解并运用Flutter的布局系统,创建适应性强、用户体验佳的界面。通过选择合适的布局Widget和遵循原则,可实现复杂且高效的UI设计。