Appearance
布局优化
优化布局可以减少小部件的构建和布局操作,减小绘制和渲染的工作量,从而提高应用程序的性能。较快的响应时间和流畅的用户界面可以提升用户体验,使应用程序更加吸引人。
优化后的布局通过减少不必要的布局计算和绘制操作,可以减少CPU和内存的使用量,从而节省设备的资源。这在移动设备上尤为重要,因为它们具有有限的计算和内存能力。除了降低应用程序的性能外,对硬件也十分友好。优化布局可以减少设备的功耗,延长电池寿命。减少不必要的布局操作和绘制操作可以减少CPU和GPU的工作负载,从而降低设备的能耗。
因布局问题而导致的显示错位或被裁剪的情况还会额外增加很大的计算。
避免文字的溢出不受控制
在实际的应用渲染过程中,文字的渲染常常是变量因为你完全不知道字符究竟有多长。稍微不注意就会导致文字的溢出,从而导致布局的错位。
务必使用TextOverflow属性:Text小部件的overflow属性定义了当文字溢出时的处理方式。可以使用不同的TextOverflow值来控制溢出的显示效果,如ellipsis(显示省略号)或fade(渐变消失)。
当然上面的overflow设置可能不生效,因为你没有告诉它在多大的范围内进行渲染,所以下面的代码可以解决这个问题:
dart
Row(
children: <Widget>[
Expanded(
Text(
"......LONG TEXT",
overflow: TextOverflow.ellipsis,
maxLines: 1,
),
)
]
);
上面的代码中使用Expanded来确保Text小部件在父容器中占满剩余的空间,从而确保溢出文本被正确处理。此外,设置maxLines属性:通过设置Text小部件的maxLines属性,可以限制文字的最大行数。超过设定的行数后,文字将被截断或使用溢出处理方式。
当然你也可以尝试`FittedBox`
布局约束
可以使用LayoutBuilder或ConstrainedBox等小部件获取父容器传递的约束条件,并根据需要对文字进行调整和布局。或者SizedBox。
使用Wrap或Flow:这些小部件可以自动换行,避免小部件溢出,并节省布局计算的开销。
不要进行较为复杂的嵌套
嵌套太多层次的小部件会增加布局和绘制的复杂性。尽量保持层次结构简单和扁平。每个小部件的构建和布局都需要一定的时间和资源。当嵌套过深时(即嵌套层次过多),构建和布局操作的数量将指数增加,导致性能下降。这会使应用程序的响应时间变慢,造成卡顿和不流畅的用户体验。
嵌套层次过多会使代码难以理解和维护。开发人员需要花更多的时间和精力来理清层次关系和处理逻辑。这可能增加开发时间,增加代码维护成本,并降低代码的可读性。
AspectRatio
通过设置宽高比,可以快速调整小部件的尺寸,而无需手动计算。
使用LayoutBuilder
LayoutBuilder可以包裹一个小部件,以便获取父小部件传递的约束条件。这样可以根据需要自定义小部件的布局并避免过度计算,大大节省运算开支。
IndexedStack
当有多个子小部件但只有一个可见时,可以使用IndexedStack包装它们。它只会构建显示的小部件,减少了不必要的构建和布局操作
及时移除不在屏幕内的布局和组件
使用ListView.builder
或ListView.separated
PageView.builder
。使用这些构造函数可以在滚动列表中只构建可见的小部件。这样可以减少构建和绘制的工作量。