forked from firka/flutter
add missing arguments for all constructors of ListView and GridView (#58746)
This commit is contained in:
@@ -1087,6 +1087,7 @@ class ListView extends BoxScrollView {
|
||||
double cacheExtent,
|
||||
int semanticChildCount,
|
||||
DragStartBehavior dragStartBehavior = DragStartBehavior.start,
|
||||
ScrollViewKeyboardDismissBehavior keyboardDismissBehavior = ScrollViewKeyboardDismissBehavior.manual,
|
||||
}) : assert(itemCount == null || itemCount >= 0),
|
||||
assert(semanticChildCount == null || semanticChildCount <= itemCount),
|
||||
childrenDelegate = SliverChildBuilderDelegate(
|
||||
@@ -1108,6 +1109,7 @@ class ListView extends BoxScrollView {
|
||||
cacheExtent: cacheExtent,
|
||||
semanticChildCount: semanticChildCount ?? itemCount,
|
||||
dragStartBehavior: dragStartBehavior,
|
||||
keyboardDismissBehavior: keyboardDismissBehavior,
|
||||
);
|
||||
|
||||
/// Creates a fixed-length scrollable linear array of list "items" separated
|
||||
@@ -1173,6 +1175,7 @@ class ListView extends BoxScrollView {
|
||||
bool addRepaintBoundaries = true,
|
||||
bool addSemanticIndexes = true,
|
||||
double cacheExtent,
|
||||
DragStartBehavior dragStartBehavior = DragStartBehavior.start,
|
||||
ScrollViewKeyboardDismissBehavior keyboardDismissBehavior = ScrollViewKeyboardDismissBehavior.manual,
|
||||
}) : assert(itemBuilder != null),
|
||||
assert(separatorBuilder != null),
|
||||
@@ -1214,6 +1217,7 @@ class ListView extends BoxScrollView {
|
||||
padding: padding,
|
||||
cacheExtent: cacheExtent,
|
||||
semanticChildCount: itemCount,
|
||||
dragStartBehavior: dragStartBehavior,
|
||||
keyboardDismissBehavior: keyboardDismissBehavior,
|
||||
);
|
||||
|
||||
@@ -1312,6 +1316,8 @@ class ListView extends BoxScrollView {
|
||||
@required this.childrenDelegate,
|
||||
double cacheExtent,
|
||||
int semanticChildCount,
|
||||
DragStartBehavior dragStartBehavior = DragStartBehavior.start,
|
||||
ScrollViewKeyboardDismissBehavior keyboardDismissBehavior = ScrollViewKeyboardDismissBehavior.manual,
|
||||
}) : assert(childrenDelegate != null),
|
||||
super(
|
||||
key: key,
|
||||
@@ -1324,6 +1330,8 @@ class ListView extends BoxScrollView {
|
||||
padding: padding,
|
||||
cacheExtent: cacheExtent,
|
||||
semanticChildCount: semanticChildCount,
|
||||
dragStartBehavior: dragStartBehavior,
|
||||
keyboardDismissBehavior: keyboardDismissBehavior,
|
||||
);
|
||||
|
||||
/// If non-null, forces the children to have the given extent in the scroll
|
||||
@@ -1583,6 +1591,8 @@ class GridView extends BoxScrollView {
|
||||
double cacheExtent,
|
||||
List<Widget> children = const <Widget>[],
|
||||
int semanticChildCount,
|
||||
DragStartBehavior dragStartBehavior = DragStartBehavior.start,
|
||||
ScrollViewKeyboardDismissBehavior keyboardDismissBehavior = ScrollViewKeyboardDismissBehavior.manual,
|
||||
}) : assert(gridDelegate != null),
|
||||
childrenDelegate = SliverChildListDelegate(
|
||||
children,
|
||||
@@ -1601,6 +1611,8 @@ class GridView extends BoxScrollView {
|
||||
padding: padding,
|
||||
cacheExtent: cacheExtent,
|
||||
semanticChildCount: semanticChildCount ?? children.length,
|
||||
dragStartBehavior: dragStartBehavior,
|
||||
keyboardDismissBehavior: keyboardDismissBehavior,
|
||||
);
|
||||
|
||||
/// Creates a scrollable, 2D array of widgets that are created on demand.
|
||||
@@ -1639,6 +1651,8 @@ class GridView extends BoxScrollView {
|
||||
bool addSemanticIndexes = true,
|
||||
double cacheExtent,
|
||||
int semanticChildCount,
|
||||
DragStartBehavior dragStartBehavior = DragStartBehavior.start,
|
||||
ScrollViewKeyboardDismissBehavior keyboardDismissBehavior = ScrollViewKeyboardDismissBehavior.manual,
|
||||
}) : assert(gridDelegate != null),
|
||||
childrenDelegate = SliverChildBuilderDelegate(
|
||||
itemBuilder,
|
||||
@@ -1658,6 +1672,8 @@ class GridView extends BoxScrollView {
|
||||
padding: padding,
|
||||
cacheExtent: cacheExtent,
|
||||
semanticChildCount: semanticChildCount ?? itemCount,
|
||||
dragStartBehavior: dragStartBehavior,
|
||||
keyboardDismissBehavior: keyboardDismissBehavior,
|
||||
);
|
||||
|
||||
/// Creates a scrollable, 2D array of widgets with both a custom
|
||||
@@ -1681,6 +1697,7 @@ class GridView extends BoxScrollView {
|
||||
double cacheExtent,
|
||||
int semanticChildCount,
|
||||
DragStartBehavior dragStartBehavior = DragStartBehavior.start,
|
||||
ScrollViewKeyboardDismissBehavior keyboardDismissBehavior = ScrollViewKeyboardDismissBehavior.manual,
|
||||
}) : assert(gridDelegate != null),
|
||||
assert(childrenDelegate != null),
|
||||
super(
|
||||
@@ -1695,6 +1712,7 @@ class GridView extends BoxScrollView {
|
||||
cacheExtent: cacheExtent,
|
||||
semanticChildCount: semanticChildCount,
|
||||
dragStartBehavior: dragStartBehavior,
|
||||
keyboardDismissBehavior: keyboardDismissBehavior,
|
||||
);
|
||||
|
||||
/// Creates a scrollable, 2D array of widgets with a fixed number of tiles in
|
||||
@@ -1731,6 +1749,7 @@ class GridView extends BoxScrollView {
|
||||
List<Widget> children = const <Widget>[],
|
||||
int semanticChildCount,
|
||||
DragStartBehavior dragStartBehavior = DragStartBehavior.start,
|
||||
ScrollViewKeyboardDismissBehavior keyboardDismissBehavior = ScrollViewKeyboardDismissBehavior.manual,
|
||||
}) : gridDelegate = SliverGridDelegateWithFixedCrossAxisCount(
|
||||
crossAxisCount: crossAxisCount,
|
||||
mainAxisSpacing: mainAxisSpacing,
|
||||
@@ -1755,6 +1774,7 @@ class GridView extends BoxScrollView {
|
||||
cacheExtent: cacheExtent,
|
||||
semanticChildCount: semanticChildCount ?? children.length,
|
||||
dragStartBehavior: dragStartBehavior,
|
||||
keyboardDismissBehavior: keyboardDismissBehavior,
|
||||
);
|
||||
|
||||
/// Creates a scrollable, 2D array of widgets with tiles that each have a
|
||||
@@ -1790,6 +1810,7 @@ class GridView extends BoxScrollView {
|
||||
List<Widget> children = const <Widget>[],
|
||||
int semanticChildCount,
|
||||
DragStartBehavior dragStartBehavior = DragStartBehavior.start,
|
||||
ScrollViewKeyboardDismissBehavior keyboardDismissBehavior = ScrollViewKeyboardDismissBehavior.manual,
|
||||
}) : gridDelegate = SliverGridDelegateWithMaxCrossAxisExtent(
|
||||
maxCrossAxisExtent: maxCrossAxisExtent,
|
||||
mainAxisSpacing: mainAxisSpacing,
|
||||
@@ -1813,6 +1834,7 @@ class GridView extends BoxScrollView {
|
||||
padding: padding,
|
||||
semanticChildCount: semanticChildCount ?? children.length,
|
||||
dragStartBehavior: dragStartBehavior,
|
||||
keyboardDismissBehavior: keyboardDismissBehavior,
|
||||
);
|
||||
|
||||
/// A delegate that controls the layout of the children within the [GridView].
|
||||
|
||||
@@ -103,22 +103,303 @@ void main() {
|
||||
final List<FocusNode> focusNodes = List<FocusNode>.generate(50, (int i) => FocusNode());
|
||||
|
||||
await tester.pumpWidget(textFieldBoilerplate(
|
||||
child: ListView(
|
||||
padding: const EdgeInsets.all(0),
|
||||
keyboardDismissBehavior: ScrollViewKeyboardDismissBehavior.onDrag,
|
||||
children: focusNodes.map((FocusNode focusNode) {
|
||||
return Container(
|
||||
height: 50,
|
||||
color: Colors.green,
|
||||
child: TextField(
|
||||
child: ListView(
|
||||
padding: const EdgeInsets.all(0),
|
||||
keyboardDismissBehavior: ScrollViewKeyboardDismissBehavior.onDrag,
|
||||
children: focusNodes.map((FocusNode focusNode) {
|
||||
return Container(
|
||||
height: 50,
|
||||
color: Colors.green,
|
||||
child: TextField(
|
||||
focusNode: focusNode,
|
||||
style: const TextStyle(
|
||||
fontSize: 24,
|
||||
fontWeight: FontWeight.bold,
|
||||
)),
|
||||
);
|
||||
}).toList(),
|
||||
)));
|
||||
)
|
||||
),
|
||||
);
|
||||
}).toList(),
|
||||
),
|
||||
));
|
||||
|
||||
final Finder finder = find.byType(TextField).first;
|
||||
final TextField textField = tester.widget(finder);
|
||||
await tester.showKeyboard(finder);
|
||||
expect(textField.focusNode.hasFocus, isTrue);
|
||||
|
||||
await tester.drag(finder, const Offset(0.0, -40.0));
|
||||
await tester.pumpAndSettle();
|
||||
expect(textField.focusNode.hasFocus, isFalse);
|
||||
});
|
||||
|
||||
testWidgets('ListView.builder dismiss keyboard onDrag test', (WidgetTester tester) async {
|
||||
final List<FocusNode> focusNodes = List<FocusNode>.generate(50, (int i) => FocusNode());
|
||||
|
||||
await tester.pumpWidget(textFieldBoilerplate(
|
||||
child: ListView.builder(
|
||||
padding: const EdgeInsets.all(0),
|
||||
keyboardDismissBehavior: ScrollViewKeyboardDismissBehavior.onDrag,
|
||||
itemCount: focusNodes.length,
|
||||
itemBuilder: (BuildContext context,int index) {
|
||||
return Container(
|
||||
height: 50,
|
||||
color: Colors.green,
|
||||
child: TextField(
|
||||
focusNode: focusNodes[index],
|
||||
style: const TextStyle(
|
||||
fontSize: 24,
|
||||
fontWeight: FontWeight.bold,
|
||||
)
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
));
|
||||
|
||||
final Finder finder = find.byType(TextField).first;
|
||||
final TextField textField = tester.widget(finder);
|
||||
await tester.showKeyboard(finder);
|
||||
expect(textField.focusNode.hasFocus, isTrue);
|
||||
|
||||
await tester.drag(finder, const Offset(0.0, -40.0));
|
||||
await tester.pumpAndSettle();
|
||||
expect(textField.focusNode.hasFocus, isFalse);
|
||||
});
|
||||
|
||||
testWidgets('ListView.custom dismiss keyboard onDrag test', (WidgetTester tester) async {
|
||||
final List<FocusNode> focusNodes = List<FocusNode>.generate(50, (int i) => FocusNode());
|
||||
|
||||
await tester.pumpWidget(textFieldBoilerplate(
|
||||
child: ListView.custom(
|
||||
padding: const EdgeInsets.all(0),
|
||||
keyboardDismissBehavior: ScrollViewKeyboardDismissBehavior.onDrag,
|
||||
childrenDelegate: SliverChildBuilderDelegate(
|
||||
(BuildContext context,int index) {
|
||||
return Container(
|
||||
height: 50,
|
||||
color: Colors.green,
|
||||
child: TextField(
|
||||
focusNode: focusNodes[index],
|
||||
style: const TextStyle(
|
||||
fontSize: 24,
|
||||
fontWeight: FontWeight.bold,
|
||||
)
|
||||
),
|
||||
);
|
||||
},
|
||||
childCount: focusNodes.length,
|
||||
),
|
||||
),
|
||||
));
|
||||
|
||||
final Finder finder = find.byType(TextField).first;
|
||||
final TextField textField = tester.widget(finder);
|
||||
await tester.showKeyboard(finder);
|
||||
expect(textField.focusNode.hasFocus, isTrue);
|
||||
|
||||
await tester.drag(finder, const Offset(0.0, -40.0));
|
||||
await tester.pumpAndSettle();
|
||||
expect(textField.focusNode.hasFocus, isFalse);
|
||||
});
|
||||
|
||||
testWidgets('ListView.separated dismiss keyboard onDrag test', (WidgetTester tester) async {
|
||||
final List<FocusNode> focusNodes = List<FocusNode>.generate(50, (int i) => FocusNode());
|
||||
|
||||
await tester.pumpWidget(textFieldBoilerplate(
|
||||
child: ListView.separated(
|
||||
padding: const EdgeInsets.all(0),
|
||||
keyboardDismissBehavior: ScrollViewKeyboardDismissBehavior.onDrag,
|
||||
itemCount: focusNodes.length,
|
||||
separatorBuilder: (BuildContext context, int index) => const Divider(),
|
||||
itemBuilder: (BuildContext context,int index) {
|
||||
return Container(
|
||||
height: 50,
|
||||
color: Colors.green,
|
||||
child: TextField(
|
||||
focusNode: focusNodes[index],
|
||||
style: const TextStyle(
|
||||
fontSize: 24,
|
||||
fontWeight: FontWeight.bold,
|
||||
)
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
));
|
||||
|
||||
final Finder finder = find.byType(TextField).first;
|
||||
final TextField textField = tester.widget(finder);
|
||||
await tester.showKeyboard(finder);
|
||||
expect(textField.focusNode.hasFocus, isTrue);
|
||||
|
||||
await tester.drag(finder, const Offset(0.0, -40.0));
|
||||
await tester.pumpAndSettle();
|
||||
expect(textField.focusNode.hasFocus, isFalse);
|
||||
});
|
||||
|
||||
testWidgets('GridView dismiss keyboard onDrag test', (WidgetTester tester) async {
|
||||
final List<FocusNode> focusNodes = List<FocusNode>.generate(50, (int i) => FocusNode());
|
||||
|
||||
await tester.pumpWidget(textFieldBoilerplate(
|
||||
child: GridView(
|
||||
padding: const EdgeInsets.all(0),
|
||||
gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount:2),
|
||||
keyboardDismissBehavior: ScrollViewKeyboardDismissBehavior.onDrag,
|
||||
children: focusNodes.map((FocusNode focusNode) {
|
||||
return Container(
|
||||
height: 50,
|
||||
color: Colors.green,
|
||||
child: TextField(
|
||||
focusNode: focusNode,
|
||||
style: const TextStyle(
|
||||
fontSize: 24,
|
||||
fontWeight: FontWeight.bold,
|
||||
)
|
||||
),
|
||||
);
|
||||
}).toList(),
|
||||
),
|
||||
));
|
||||
|
||||
final Finder finder = find.byType(TextField).first;
|
||||
final TextField textField = tester.widget(finder);
|
||||
await tester.showKeyboard(finder);
|
||||
expect(textField.focusNode.hasFocus, isTrue);
|
||||
|
||||
await tester.drag(finder, const Offset(0.0, -40.0));
|
||||
await tester.pumpAndSettle();
|
||||
expect(textField.focusNode.hasFocus, isFalse);
|
||||
});
|
||||
|
||||
testWidgets('GridView.builder dismiss keyboard onDrag test', (WidgetTester tester) async {
|
||||
final List<FocusNode> focusNodes = List<FocusNode>.generate(50, (int i) => FocusNode());
|
||||
|
||||
await tester.pumpWidget(textFieldBoilerplate(
|
||||
child: GridView.builder(
|
||||
padding: const EdgeInsets.all(0),
|
||||
gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount:2),
|
||||
keyboardDismissBehavior: ScrollViewKeyboardDismissBehavior.onDrag,
|
||||
itemCount: focusNodes.length,
|
||||
itemBuilder: (BuildContext context, int index){
|
||||
return Container(
|
||||
height: 50,
|
||||
color: Colors.green,
|
||||
child: TextField(
|
||||
focusNode: focusNodes[index],
|
||||
style: const TextStyle(
|
||||
fontSize: 24,
|
||||
fontWeight: FontWeight.bold,
|
||||
),
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
));
|
||||
|
||||
final Finder finder = find.byType(TextField).first;
|
||||
final TextField textField = tester.widget(finder);
|
||||
await tester.showKeyboard(finder);
|
||||
expect(textField.focusNode.hasFocus, isTrue);
|
||||
|
||||
await tester.drag(finder, const Offset(0.0, -40.0));
|
||||
await tester.pumpAndSettle();
|
||||
expect(textField.focusNode.hasFocus, isFalse);
|
||||
});
|
||||
|
||||
testWidgets('GridView.count dismiss keyboard onDrag test', (WidgetTester tester) async {
|
||||
final List<FocusNode> focusNodes = List<FocusNode>.generate(50, (int i) => FocusNode());
|
||||
|
||||
await tester.pumpWidget(textFieldBoilerplate(
|
||||
child: GridView.count(
|
||||
padding: const EdgeInsets.all(0),
|
||||
crossAxisCount: 2,
|
||||
keyboardDismissBehavior: ScrollViewKeyboardDismissBehavior.onDrag,
|
||||
children: focusNodes.map((FocusNode focusNode) {
|
||||
return Container(
|
||||
height: 50,
|
||||
color: Colors.green,
|
||||
child: TextField(
|
||||
focusNode: focusNode,
|
||||
style: const TextStyle(
|
||||
fontSize: 24,
|
||||
fontWeight: FontWeight.bold,
|
||||
)
|
||||
),
|
||||
);
|
||||
}).toList(),
|
||||
),
|
||||
));
|
||||
|
||||
final Finder finder = find.byType(TextField).first;
|
||||
final TextField textField = tester.widget(finder);
|
||||
await tester.showKeyboard(finder);
|
||||
expect(textField.focusNode.hasFocus, isTrue);
|
||||
|
||||
await tester.drag(finder, const Offset(0.0, -40.0));
|
||||
await tester.pumpAndSettle();
|
||||
expect(textField.focusNode.hasFocus, isFalse);
|
||||
});
|
||||
|
||||
testWidgets('GridView.extent dismiss keyboard onDrag test', (WidgetTester tester) async {
|
||||
final List<FocusNode> focusNodes = List<FocusNode>.generate(50, (int i) => FocusNode());
|
||||
|
||||
await tester.pumpWidget(textFieldBoilerplate(
|
||||
child: GridView.extent(
|
||||
padding: const EdgeInsets.all(0),
|
||||
maxCrossAxisExtent: 300,
|
||||
keyboardDismissBehavior: ScrollViewKeyboardDismissBehavior.onDrag,
|
||||
children: focusNodes.map((FocusNode focusNode) {
|
||||
return Container(
|
||||
height: 50,
|
||||
color: Colors.green,
|
||||
child: TextField(
|
||||
focusNode: focusNode,
|
||||
style: const TextStyle(
|
||||
fontSize: 24,
|
||||
fontWeight: FontWeight.bold,
|
||||
)
|
||||
),
|
||||
);
|
||||
}).toList(),
|
||||
),
|
||||
));
|
||||
|
||||
final Finder finder = find.byType(TextField).first;
|
||||
final TextField textField = tester.widget(finder);
|
||||
await tester.showKeyboard(finder);
|
||||
expect(textField.focusNode.hasFocus, isTrue);
|
||||
|
||||
await tester.drag(finder, const Offset(0.0, -40.0));
|
||||
await tester.pumpAndSettle();
|
||||
expect(textField.focusNode.hasFocus, isFalse);
|
||||
});
|
||||
|
||||
testWidgets('GridView.custom dismiss keyboard onDrag test', (WidgetTester tester) async {
|
||||
final List<FocusNode> focusNodes = List<FocusNode>.generate(50, (int i) => FocusNode());
|
||||
|
||||
await tester.pumpWidget(textFieldBoilerplate(
|
||||
child: GridView.custom(
|
||||
padding: const EdgeInsets.all(0),
|
||||
gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount:2),
|
||||
keyboardDismissBehavior: ScrollViewKeyboardDismissBehavior.onDrag,
|
||||
childrenDelegate: SliverChildBuilderDelegate(
|
||||
(BuildContext context,int index) {
|
||||
return Container(
|
||||
height: 50,
|
||||
color: Colors.green,
|
||||
child: TextField(
|
||||
focusNode: focusNodes[index],
|
||||
style: const TextStyle(
|
||||
fontSize: 24,
|
||||
fontWeight: FontWeight.bold,
|
||||
)
|
||||
),
|
||||
);
|
||||
},
|
||||
childCount: focusNodes.length,
|
||||
),
|
||||
),
|
||||
));
|
||||
|
||||
final Finder finder = find.byType(TextField).first;
|
||||
final TextField textField = tester.widget(finder);
|
||||
@@ -161,6 +442,285 @@ void main() {
|
||||
expect(textField.focusNode.hasFocus, isTrue);
|
||||
});
|
||||
|
||||
testWidgets('ListView.builder dismiss keyboard manual test', (WidgetTester tester) async {
|
||||
final List<FocusNode> focusNodes = List<FocusNode>.generate(50, (int i) => FocusNode());
|
||||
|
||||
await tester.pumpWidget(textFieldBoilerplate(
|
||||
child: ListView.builder(
|
||||
padding: const EdgeInsets.all(0),
|
||||
keyboardDismissBehavior: ScrollViewKeyboardDismissBehavior.manual,
|
||||
itemCount: focusNodes.length,
|
||||
itemBuilder: (BuildContext context,int index) {
|
||||
return Container(
|
||||
height: 50,
|
||||
color: Colors.green,
|
||||
child: TextField(
|
||||
focusNode: focusNodes[index],
|
||||
style: const TextStyle(
|
||||
fontSize: 24,
|
||||
fontWeight: FontWeight.bold,
|
||||
)
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
));
|
||||
|
||||
final Finder finder = find.byType(TextField).first;
|
||||
final TextField textField = tester.widget(finder);
|
||||
await tester.showKeyboard(finder);
|
||||
expect(textField.focusNode.hasFocus, isTrue);
|
||||
|
||||
await tester.drag(finder, const Offset(0.0, -40.0));
|
||||
await tester.pumpAndSettle();
|
||||
expect(textField.focusNode.hasFocus, isTrue);
|
||||
});
|
||||
|
||||
testWidgets('ListView.custom dismiss keyboard manual test', (WidgetTester tester) async {
|
||||
final List<FocusNode> focusNodes = List<FocusNode>.generate(50, (int i) => FocusNode());
|
||||
|
||||
await tester.pumpWidget(textFieldBoilerplate(
|
||||
child: ListView.custom(
|
||||
padding: const EdgeInsets.all(0),
|
||||
keyboardDismissBehavior: ScrollViewKeyboardDismissBehavior.manual,
|
||||
childrenDelegate: SliverChildBuilderDelegate(
|
||||
(BuildContext context,int index) {
|
||||
return Container(
|
||||
height: 50,
|
||||
color: Colors.green,
|
||||
child: TextField(
|
||||
focusNode: focusNodes[index],
|
||||
style: const TextStyle(
|
||||
fontSize: 24,
|
||||
fontWeight: FontWeight.bold,
|
||||
)
|
||||
),
|
||||
);
|
||||
},
|
||||
childCount: focusNodes.length,
|
||||
),
|
||||
),
|
||||
));
|
||||
|
||||
final Finder finder = find.byType(TextField).first;
|
||||
final TextField textField = tester.widget(finder);
|
||||
await tester.showKeyboard(finder);
|
||||
expect(textField.focusNode.hasFocus, isTrue);
|
||||
|
||||
await tester.drag(finder, const Offset(0.0, -40.0));
|
||||
await tester.pumpAndSettle();
|
||||
expect(textField.focusNode.hasFocus, isTrue);
|
||||
});
|
||||
|
||||
testWidgets('ListView.separated dismiss keyboard manual test', (WidgetTester tester) async {
|
||||
final List<FocusNode> focusNodes = List<FocusNode>.generate(50, (int i) => FocusNode());
|
||||
|
||||
await tester.pumpWidget(textFieldBoilerplate(
|
||||
child: ListView.separated(
|
||||
padding: const EdgeInsets.all(0),
|
||||
keyboardDismissBehavior: ScrollViewKeyboardDismissBehavior.manual,
|
||||
itemCount: focusNodes.length,
|
||||
separatorBuilder: (BuildContext context, int index) => const Divider(),
|
||||
itemBuilder: (BuildContext context,int index) {
|
||||
return Container(
|
||||
height: 50,
|
||||
color: Colors.green,
|
||||
child: TextField(
|
||||
focusNode: focusNodes[index],
|
||||
style: const TextStyle(
|
||||
fontSize: 24,
|
||||
fontWeight: FontWeight.bold,
|
||||
)
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
));
|
||||
|
||||
final Finder finder = find.byType(TextField).first;
|
||||
final TextField textField = tester.widget(finder);
|
||||
await tester.showKeyboard(finder);
|
||||
expect(textField.focusNode.hasFocus, isTrue);
|
||||
|
||||
await tester.drag(finder, const Offset(0.0, -40.0));
|
||||
await tester.pumpAndSettle();
|
||||
expect(textField.focusNode.hasFocus, isTrue);
|
||||
});
|
||||
|
||||
testWidgets('GridView dismiss keyboard manual test', (WidgetTester tester) async {
|
||||
final List<FocusNode> focusNodes = List<FocusNode>.generate(50, (int i) => FocusNode());
|
||||
|
||||
await tester.pumpWidget(textFieldBoilerplate(
|
||||
child: GridView(
|
||||
padding: const EdgeInsets.all(0),
|
||||
gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount:2),
|
||||
keyboardDismissBehavior: ScrollViewKeyboardDismissBehavior.manual,
|
||||
children: focusNodes.map((FocusNode focusNode) {
|
||||
return Container(
|
||||
height: 50,
|
||||
color: Colors.green,
|
||||
child: TextField(
|
||||
focusNode: focusNode,
|
||||
style: const TextStyle(
|
||||
fontSize: 24,
|
||||
fontWeight: FontWeight.bold,
|
||||
)
|
||||
),
|
||||
);
|
||||
}).toList(),
|
||||
),
|
||||
));
|
||||
|
||||
final Finder finder = find.byType(TextField).first;
|
||||
final TextField textField = tester.widget(finder);
|
||||
await tester.showKeyboard(finder);
|
||||
expect(textField.focusNode.hasFocus, isTrue);
|
||||
|
||||
await tester.drag(finder, const Offset(0.0, -40.0));
|
||||
await tester.pumpAndSettle();
|
||||
expect(textField.focusNode.hasFocus, isTrue);
|
||||
});
|
||||
|
||||
testWidgets('GridView.builder dismiss keyboard manual test', (WidgetTester tester) async {
|
||||
final List<FocusNode> focusNodes = List<FocusNode>.generate(50, (int i) => FocusNode());
|
||||
|
||||
await tester.pumpWidget(textFieldBoilerplate(
|
||||
child: GridView.builder(
|
||||
padding: const EdgeInsets.all(0),
|
||||
gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount:2),
|
||||
keyboardDismissBehavior: ScrollViewKeyboardDismissBehavior.manual,
|
||||
itemCount: focusNodes.length,
|
||||
itemBuilder: (BuildContext context, int index){
|
||||
return Container(
|
||||
height: 50,
|
||||
color: Colors.green,
|
||||
child: TextField(
|
||||
focusNode: focusNodes[index],
|
||||
style: const TextStyle(
|
||||
fontSize: 24,
|
||||
fontWeight: FontWeight.bold,
|
||||
),
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
));
|
||||
|
||||
final Finder finder = find.byType(TextField).first;
|
||||
final TextField textField = tester.widget(finder);
|
||||
await tester.showKeyboard(finder);
|
||||
expect(textField.focusNode.hasFocus, isTrue);
|
||||
|
||||
await tester.drag(finder, const Offset(0.0, -40.0));
|
||||
await tester.pumpAndSettle();
|
||||
expect(textField.focusNode.hasFocus, isTrue);
|
||||
});
|
||||
|
||||
testWidgets('GridView.count dismiss keyboard manual test', (WidgetTester tester) async {
|
||||
final List<FocusNode> focusNodes = List<FocusNode>.generate(50, (int i) => FocusNode());
|
||||
|
||||
await tester.pumpWidget(textFieldBoilerplate(
|
||||
child: GridView.count(
|
||||
padding: const EdgeInsets.all(0),
|
||||
crossAxisCount: 2,
|
||||
keyboardDismissBehavior: ScrollViewKeyboardDismissBehavior.manual,
|
||||
children: focusNodes.map((FocusNode focusNode) {
|
||||
return Container(
|
||||
height: 50,
|
||||
color: Colors.green,
|
||||
child: TextField(
|
||||
focusNode: focusNode,
|
||||
style: const TextStyle(
|
||||
fontSize: 24,
|
||||
fontWeight: FontWeight.bold,
|
||||
)
|
||||
),
|
||||
);
|
||||
}).toList(),
|
||||
),
|
||||
));
|
||||
|
||||
final Finder finder = find.byType(TextField).first;
|
||||
final TextField textField = tester.widget(finder);
|
||||
await tester.showKeyboard(finder);
|
||||
expect(textField.focusNode.hasFocus, isTrue);
|
||||
|
||||
await tester.drag(finder, const Offset(0.0, -40.0));
|
||||
await tester.pumpAndSettle();
|
||||
expect(textField.focusNode.hasFocus, isTrue);
|
||||
});
|
||||
|
||||
testWidgets('GridView.extent dismiss keyboard manual test', (WidgetTester tester) async {
|
||||
final List<FocusNode> focusNodes = List<FocusNode>.generate(50, (int i) => FocusNode());
|
||||
|
||||
await tester.pumpWidget(textFieldBoilerplate(
|
||||
child: GridView.extent(
|
||||
padding: const EdgeInsets.all(0),
|
||||
maxCrossAxisExtent: 300,
|
||||
keyboardDismissBehavior: ScrollViewKeyboardDismissBehavior.manual,
|
||||
children: focusNodes.map((FocusNode focusNode) {
|
||||
return Container(
|
||||
height: 50,
|
||||
color: Colors.green,
|
||||
child: TextField(
|
||||
focusNode: focusNode,
|
||||
style: const TextStyle(
|
||||
fontSize: 24,
|
||||
fontWeight: FontWeight.bold,
|
||||
)
|
||||
),
|
||||
);
|
||||
}).toList(),
|
||||
),
|
||||
));
|
||||
|
||||
final Finder finder = find.byType(TextField).first;
|
||||
final TextField textField = tester.widget(finder);
|
||||
await tester.showKeyboard(finder);
|
||||
expect(textField.focusNode.hasFocus, isTrue);
|
||||
|
||||
await tester.drag(finder, const Offset(0.0, -40.0));
|
||||
await tester.pumpAndSettle();
|
||||
expect(textField.focusNode.hasFocus, isTrue);
|
||||
});
|
||||
|
||||
testWidgets('GridView.custom dismiss keyboard manual test', (WidgetTester tester) async {
|
||||
final List<FocusNode> focusNodes = List<FocusNode>.generate(50, (int i) => FocusNode());
|
||||
|
||||
await tester.pumpWidget(textFieldBoilerplate(
|
||||
child: GridView.custom(
|
||||
padding: const EdgeInsets.all(0),
|
||||
gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount:2),
|
||||
keyboardDismissBehavior: ScrollViewKeyboardDismissBehavior.manual,
|
||||
childrenDelegate: SliverChildBuilderDelegate(
|
||||
(BuildContext context,int index) {
|
||||
return Container(
|
||||
height: 50,
|
||||
color: Colors.green,
|
||||
child: TextField(
|
||||
focusNode: focusNodes[index],
|
||||
style: const TextStyle(
|
||||
fontSize: 24,
|
||||
fontWeight: FontWeight.bold,
|
||||
)
|
||||
),
|
||||
);
|
||||
},
|
||||
childCount: focusNodes.length,
|
||||
),
|
||||
),
|
||||
));
|
||||
|
||||
final Finder finder = find.byType(TextField).first;
|
||||
final TextField textField = tester.widget(finder);
|
||||
await tester.showKeyboard(finder);
|
||||
expect(textField.focusNode.hasFocus, isTrue);
|
||||
|
||||
await tester.drag(finder, const Offset(0.0, -40.0));
|
||||
await tester.pumpAndSettle();
|
||||
expect(textField.focusNode.hasFocus, isTrue);
|
||||
});
|
||||
|
||||
testWidgets('ListView restart ballistic activity out of range', (WidgetTester tester) async {
|
||||
Widget buildListView(int n) {
|
||||
return Directionality(
|
||||
|
||||
Reference in New Issue
Block a user