Skip to content

Commit 571826a

Browse files
authored
Merge pull request #476 from gabber235/master
feat: add descendantsAreTraversable parameter to useFocusNode
2 parents caa480b + 9fd4957 commit 571826a

File tree

2 files changed

+12
-0
lines changed

2 files changed

+12
-0
lines changed

packages/flutter_hooks/lib/src/focus_node.dart

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ FocusNode useFocusNode({
1010
bool skipTraversal = false,
1111
bool canRequestFocus = true,
1212
bool descendantsAreFocusable = true,
13+
bool descendantsAreTraversable = true,
1314
}) {
1415
return use(
1516
_FocusNodeHook(
@@ -18,6 +19,7 @@ FocusNode useFocusNode({
1819
skipTraversal: skipTraversal,
1920
canRequestFocus: canRequestFocus,
2021
descendantsAreFocusable: descendantsAreFocusable,
22+
descendantsAreTraversable: descendantsAreTraversable,
2123
),
2224
);
2325
}
@@ -29,13 +31,15 @@ class _FocusNodeHook extends Hook<FocusNode> {
2931
required this.skipTraversal,
3032
required this.canRequestFocus,
3133
required this.descendantsAreFocusable,
34+
required this.descendantsAreTraversable,
3235
});
3336

3437
final String? debugLabel;
3538
final FocusOnKeyEventCallback? onKeyEvent;
3639
final bool skipTraversal;
3740
final bool canRequestFocus;
3841
final bool descendantsAreFocusable;
42+
final bool descendantsAreTraversable;
3943

4044
@override
4145
_FocusNodeHookState createState() {
@@ -50,6 +54,7 @@ class _FocusNodeHookState extends HookState<FocusNode, _FocusNodeHook> {
5054
skipTraversal: hook.skipTraversal,
5155
canRequestFocus: hook.canRequestFocus,
5256
descendantsAreFocusable: hook.descendantsAreFocusable,
57+
descendantsAreTraversable: hook.descendantsAreTraversable,
5358
);
5459

5560
@override
@@ -59,6 +64,7 @@ class _FocusNodeHookState extends HookState<FocusNode, _FocusNodeHook> {
5964
..skipTraversal = hook.skipTraversal
6065
..canRequestFocus = hook.canRequestFocus
6166
..descendantsAreFocusable = hook.descendantsAreFocusable
67+
..descendantsAreTraversable = hook.descendantsAreTraversable
6268
..onKeyEvent = hook.onKeyEvent;
6369
}
6470

packages/flutter_hooks/test/use_focus_node_test.dart

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,8 @@ void main() {
7676
expect(focusNode.skipTraversal, official.skipTraversal);
7777
expect(focusNode.canRequestFocus, official.canRequestFocus);
7878
expect(focusNode.descendantsAreFocusable, official.descendantsAreFocusable);
79+
expect(focusNode.descendantsAreTraversable,
80+
official.descendantsAreTraversable);
7981
});
8082

8183
testWidgets('has all the FocusNode parameters', (tester) async {
@@ -91,6 +93,7 @@ void main() {
9193
skipTraversal: true,
9294
canRequestFocus: false,
9395
descendantsAreFocusable: false,
96+
descendantsAreTraversable: false,
9497
);
9598
return Container();
9699
}),
@@ -101,6 +104,7 @@ void main() {
101104
expect(focusNode.skipTraversal, true);
102105
expect(focusNode.canRequestFocus, false);
103106
expect(focusNode.descendantsAreFocusable, false);
107+
expect(focusNode.descendantsAreTraversable, false);
104108
});
105109

106110
testWidgets('handles parameter change', (tester) async {
@@ -118,6 +122,7 @@ void main() {
118122
skipTraversal: true,
119123
canRequestFocus: false,
120124
descendantsAreFocusable: false,
125+
descendantsAreTraversable: false,
121126
);
122127

123128
return Container();
@@ -140,5 +145,6 @@ void main() {
140145
expect(focusNode.skipTraversal, false);
141146
expect(focusNode.canRequestFocus, true);
142147
expect(focusNode.descendantsAreFocusable, true);
148+
expect(focusNode.descendantsAreTraversable, true);
143149
});
144150
}

0 commit comments

Comments
 (0)