1. LayoutBuilder работает с реальными ограничениями родительского виджета, чтобы интерфейс получился гибким и предсказуемым на любых устройствах
LayoutBuilder(
builder: (context, constraints) {
if (constraints.maxWidth > 700) {
return Row(
children: [
Sidebar(),
Expanded(child: Content()),
],
);
}
return Content();
},
);
2. AnimatedSwitcher позволяет аккуратно анимировать переходы через fade, slide или scale и сразу делает интерфейс «дороже»
AnimatedSwitcher(
duration: Duration(milliseconds: 300),
child: Text('$count', key: ValueKey(count)),
);
3. TweenAnimationBuilder закрывает до 80% простых анимаций
TweenAnimationBuilder<double>(
tween: Tween(begin: 0, end: progress),
duration: Duration(milliseconds: 500),
builder: (context, value, child) {
return LinearProgressIndicator(value: value);
},
);
4. RepaintBoundary изолирует часть UI и не дает ей перерисовываться без необходимости
RepaintBoundary(
child: ExpensiveWidget(),
)
А что для в работе используете вы?
