diff --git a/example/lib/main.dart b/example/lib/main.dart index f058aa2..5a4cd41 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -112,10 +112,6 @@ class SmartDialogPage extends StatelessWidget { targetContext: context, alignment: Alignment.bottomCenter, animationType: SmartAnimationType.scale, - highlightBuilder: (_, __) { - return Positioned(child: Container()); - }, - scalePointBuilder: (selfSize) => Offset(selfSize.width, 0), builder: (_) { return Container(height: 50, width: 30, color: Colors.red); }, diff --git a/lib/src/widget/helper/attach_widget.dart b/lib/src/widget/helper/attach_widget.dart index 5c70d18..93e3111 100644 --- a/lib/src/widget/helper/attach_widget.dart +++ b/lib/src/widget/helper/attach_widget.dart @@ -54,7 +54,8 @@ class AttachWidget extends StatefulWidget { State createState() => _AttachWidgetState(); } -class _AttachWidgetState extends State { +class _AttachWidgetState extends State + with WidgetsBindingObserver { late double _postFrameOpacity; //offset size @@ -71,17 +72,30 @@ class _AttachWidgetState extends State { @override void initState() { + WidgetsBinding.instance.addObserver(this); _alignment = widget.alignment; _resetState(); super.initState(); } + @override + void dispose() { + WidgetsBinding.instance.removeObserver(this); + super.dispose(); + } + @override void didUpdateWidget(covariant AttachWidget oldWidget) { + super.didUpdateWidget(oldWidget); if (oldWidget.originChild != widget.originChild || oldWidget.targetContext != widget.targetContext || oldWidget.targetBuilder != widget.targetBuilder) _resetState(); - super.didUpdateWidget(oldWidget); + } + + @override + void didChangeMetrics() { + super.didChangeMetrics(); + _resetState(); } @override