Files
xianyan/lib/shared/widgets/containers/deferred_builder.dart
Developer 10df6b705c 同步
2026-06-02 03:52:54 +08:00

40 lines
1.1 KiB
Dart

/// ============================================================
/// 闲言APP — 延迟渲染包装组件
/// 创建时间: 2026-06-02
/// 更新时间: 2026-06-02
/// 作用: 将子组件(如syncfusion chart)延迟到postFrameCallback渲染
/// 避免chart在build阶段触发markNeedsLayout导致卡死
/// 上次更新: 初始创建
/// ============================================================
import 'package:flutter/widgets.dart';
class DeferredBuilder extends StatefulWidget {
const DeferredBuilder({super.key, required this.builder});
final WidgetBuilder builder;
@override
State<DeferredBuilder> createState() => _DeferredBuilderState();
}
class _DeferredBuilderState extends State<DeferredBuilder> {
bool _ready = false;
@override
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) {
if (mounted) setState(() => _ready = true);
});
}
@override
Widget build(BuildContext context) {
if (!_ready) {
return const SizedBox.expand();
}
return widget.builder(context);
}
}