diff --git a/lib/src/scroll_shadow.dart b/lib/src/scroll_shadow.dart index aa0df42..f2a9a59 100644 --- a/lib/src/scroll_shadow.dart +++ b/lib/src/scroll_shadow.dart @@ -1,6 +1,8 @@ /// [ScrollShadow] class library flutter_scroll_shadow; +import 'dart:async'; + import 'package:flutter/material.dart'; /// Wraps a scrollable child in `ScrollShadow`s. @@ -63,14 +65,18 @@ class _ScrollShadowState extends State { set reachedStart(final bool value) { if (_reachedStart == value) return; - setState(() => _reachedStart = value); + scheduleMicrotask(() { + setState(() => _reachedStart = value); + }); } bool get reachedEnd => _reachedEnd; set reachedEnd(final bool value) { if (_reachedEnd == value) return; - setState(() => _reachedEnd = value); + scheduleMicrotask(() { + setState(() => _reachedEnd = value); + }); } @override @@ -186,7 +192,9 @@ class _ScrollShadowState extends State { bool _handleNewMetrics(final ScrollMetrics metrics) { if (_axis != metrics.axis) { - setState(() => _axis = metrics.axis); + scheduleMicrotask(() { + setState(() => _axis = metrics.axis); + }); } reachedStart = metrics.pixels <= metrics.minScrollExtent; reachedEnd = metrics.pixels >= metrics.maxScrollExtent;