diff --git a/packages/leancode_hooks/CHANGELOG.md b/packages/leancode_hooks/CHANGELOG.md index fa1b1f97..9c33181b 100644 --- a/packages/leancode_hooks/CHANGELOG.md +++ b/packages/leancode_hooks/CHANGELOG.md @@ -1,3 +1,7 @@ +# 0.1.2 + +- Make `usePostFrameEffect` `keys` parameter nullable to allow effect to run on every build. + # 0.1.1 - Bump `bloc` to `9.0.0`. diff --git a/packages/leancode_hooks/lib/src/use_post_frame_effect.dart b/packages/leancode_hooks/lib/src/use_post_frame_effect.dart index 75ed7db3..74947014 100644 --- a/packages/leancode_hooks/lib/src/use_post_frame_effect.dart +++ b/packages/leancode_hooks/lib/src/use_post_frame_effect.dart @@ -5,7 +5,7 @@ import 'package:flutter_hooks/flutter_hooks.dart'; /// [WidgetsBinding.addPostFrameCallback]. void usePostFrameEffect( VoidCallback effect, { - List keys = const [], + List? keys = const [], }) { useEffect( () { diff --git a/packages/leancode_hooks/pubspec.yaml b/packages/leancode_hooks/pubspec.yaml index be2662aa..2c97de16 100644 --- a/packages/leancode_hooks/pubspec.yaml +++ b/packages/leancode_hooks/pubspec.yaml @@ -1,5 +1,5 @@ name: leancode_hooks -version: 0.1.1 +version: 0.1.2 homepage: https://github.com/leancodepl/flutter_corelibrary/tree/master/packages/leancode_hooks repository: https://github.com/leancodepl/flutter_corelibrary description: >- diff --git a/packages/leancode_hooks/test/use_post_frame_effect_test.dart b/packages/leancode_hooks/test/use_post_frame_effect_test.dart index 8cdab06e..85ffecb5 100644 --- a/packages/leancode_hooks/test/use_post_frame_effect_test.dart +++ b/packages/leancode_hooks/test/use_post_frame_effect_test.dart @@ -19,6 +19,24 @@ class UsePostFrameEffectTestWidget extends HookWidget { } } +class UsePostFrameEffectWithNullKeysTestWidget extends HookWidget { + const UsePostFrameEffectWithNullKeysTestWidget({super.key}); + + @override + Widget build(BuildContext context) { + final called = useState(false); + + usePostFrameEffect( + () => called.value = true, + keys: null, + ); + + return MaterialApp( + home: Text(called.value.toString()), + ); + } +} + void main() { testWidgets('effect gets called post frame', (tester) async { await tester.pumpWidget(const UsePostFrameEffectTestWidget()); @@ -29,4 +47,15 @@ void main() { expect(find.text('true'), findsOneWidget); }); + + testWidgets('accepts null keys parameter', (tester) async { + await tester.pumpWidget(const UsePostFrameEffectWithNullKeysTestWidget()); + + expect(find.text('true'), findsNothing); + + tester.binding.scheduleWarmUpFrame(); + + expect(find.text('true'), findsOneWidget); + }); } +