40 lines
1.1 KiB
Dart
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);
|
|
}
|
|
}
|