Unverified Commit 3fc364cf authored by zmtzawqlp's avatar zmtzawqlp Committed by GitHub

add missing arguments for all constructors of ListView and GridView (#58746)

parent d25b9c80
...@@ -1087,6 +1087,7 @@ class ListView extends BoxScrollView { ...@@ -1087,6 +1087,7 @@ class ListView extends BoxScrollView {
double cacheExtent, double cacheExtent,
int semanticChildCount, int semanticChildCount,
DragStartBehavior dragStartBehavior = DragStartBehavior.start, DragStartBehavior dragStartBehavior = DragStartBehavior.start,
ScrollViewKeyboardDismissBehavior keyboardDismissBehavior = ScrollViewKeyboardDismissBehavior.manual,
}) : assert(itemCount == null || itemCount >= 0), }) : assert(itemCount == null || itemCount >= 0),
assert(semanticChildCount == null || semanticChildCount <= itemCount), assert(semanticChildCount == null || semanticChildCount <= itemCount),
childrenDelegate = SliverChildBuilderDelegate( childrenDelegate = SliverChildBuilderDelegate(
...@@ -1108,6 +1109,7 @@ class ListView extends BoxScrollView { ...@@ -1108,6 +1109,7 @@ class ListView extends BoxScrollView {
cacheExtent: cacheExtent, cacheExtent: cacheExtent,
semanticChildCount: semanticChildCount ?? itemCount, semanticChildCount: semanticChildCount ?? itemCount,
dragStartBehavior: dragStartBehavior, dragStartBehavior: dragStartBehavior,
keyboardDismissBehavior: keyboardDismissBehavior,
); );
/// Creates a fixed-length scrollable linear array of list "items" separated /// Creates a fixed-length scrollable linear array of list "items" separated
...@@ -1173,6 +1175,7 @@ class ListView extends BoxScrollView { ...@@ -1173,6 +1175,7 @@ class ListView extends BoxScrollView {
bool addRepaintBoundaries = true, bool addRepaintBoundaries = true,
bool addSemanticIndexes = true, bool addSemanticIndexes = true,
double cacheExtent, double cacheExtent,
DragStartBehavior dragStartBehavior = DragStartBehavior.start,
ScrollViewKeyboardDismissBehavior keyboardDismissBehavior = ScrollViewKeyboardDismissBehavior.manual, ScrollViewKeyboardDismissBehavior keyboardDismissBehavior = ScrollViewKeyboardDismissBehavior.manual,
}) : assert(itemBuilder != null), }) : assert(itemBuilder != null),
assert(separatorBuilder != null), assert(separatorBuilder != null),
...@@ -1214,6 +1217,7 @@ class ListView extends BoxScrollView { ...@@ -1214,6 +1217,7 @@ class ListView extends BoxScrollView {
padding: padding, padding: padding,
cacheExtent: cacheExtent, cacheExtent: cacheExtent,
semanticChildCount: itemCount, semanticChildCount: itemCount,
dragStartBehavior: dragStartBehavior,
keyboardDismissBehavior: keyboardDismissBehavior, keyboardDismissBehavior: keyboardDismissBehavior,
); );
...@@ -1312,6 +1316,8 @@ class ListView extends BoxScrollView { ...@@ -1312,6 +1316,8 @@ class ListView extends BoxScrollView {
@required this.childrenDelegate, @required this.childrenDelegate,
double cacheExtent, double cacheExtent,
int semanticChildCount, int semanticChildCount,
DragStartBehavior dragStartBehavior = DragStartBehavior.start,
ScrollViewKeyboardDismissBehavior keyboardDismissBehavior = ScrollViewKeyboardDismissBehavior.manual,
}) : assert(childrenDelegate != null), }) : assert(childrenDelegate != null),
super( super(
key: key, key: key,
...@@ -1324,6 +1330,8 @@ class ListView extends BoxScrollView { ...@@ -1324,6 +1330,8 @@ class ListView extends BoxScrollView {
padding: padding, padding: padding,
cacheExtent: cacheExtent, cacheExtent: cacheExtent,
semanticChildCount: semanticChildCount, semanticChildCount: semanticChildCount,
dragStartBehavior: dragStartBehavior,
keyboardDismissBehavior: keyboardDismissBehavior,
); );
/// If non-null, forces the children to have the given extent in the scroll /// If non-null, forces the children to have the given extent in the scroll
...@@ -1583,6 +1591,8 @@ class GridView extends BoxScrollView { ...@@ -1583,6 +1591,8 @@ class GridView extends BoxScrollView {
double cacheExtent, double cacheExtent,
List<Widget> children = const <Widget>[], List<Widget> children = const <Widget>[],
int semanticChildCount, int semanticChildCount,
DragStartBehavior dragStartBehavior = DragStartBehavior.start,
ScrollViewKeyboardDismissBehavior keyboardDismissBehavior = ScrollViewKeyboardDismissBehavior.manual,
}) : assert(gridDelegate != null), }) : assert(gridDelegate != null),
childrenDelegate = SliverChildListDelegate( childrenDelegate = SliverChildListDelegate(
children, children,
...@@ -1601,6 +1611,8 @@ class GridView extends BoxScrollView { ...@@ -1601,6 +1611,8 @@ class GridView extends BoxScrollView {
padding: padding, padding: padding,
cacheExtent: cacheExtent, cacheExtent: cacheExtent,
semanticChildCount: semanticChildCount ?? children.length, semanticChildCount: semanticChildCount ?? children.length,
dragStartBehavior: dragStartBehavior,
keyboardDismissBehavior: keyboardDismissBehavior,
); );
/// Creates a scrollable, 2D array of widgets that are created on demand. /// Creates a scrollable, 2D array of widgets that are created on demand.
...@@ -1639,6 +1651,8 @@ class GridView extends BoxScrollView { ...@@ -1639,6 +1651,8 @@ class GridView extends BoxScrollView {
bool addSemanticIndexes = true, bool addSemanticIndexes = true,
double cacheExtent, double cacheExtent,
int semanticChildCount, int semanticChildCount,
DragStartBehavior dragStartBehavior = DragStartBehavior.start,
ScrollViewKeyboardDismissBehavior keyboardDismissBehavior = ScrollViewKeyboardDismissBehavior.manual,
}) : assert(gridDelegate != null), }) : assert(gridDelegate != null),
childrenDelegate = SliverChildBuilderDelegate( childrenDelegate = SliverChildBuilderDelegate(
itemBuilder, itemBuilder,
...@@ -1658,6 +1672,8 @@ class GridView extends BoxScrollView { ...@@ -1658,6 +1672,8 @@ class GridView extends BoxScrollView {
padding: padding, padding: padding,
cacheExtent: cacheExtent, cacheExtent: cacheExtent,
semanticChildCount: semanticChildCount ?? itemCount, semanticChildCount: semanticChildCount ?? itemCount,
dragStartBehavior: dragStartBehavior,
keyboardDismissBehavior: keyboardDismissBehavior,
); );
/// Creates a scrollable, 2D array of widgets with both a custom /// Creates a scrollable, 2D array of widgets with both a custom
...@@ -1681,6 +1697,7 @@ class GridView extends BoxScrollView { ...@@ -1681,6 +1697,7 @@ class GridView extends BoxScrollView {
double cacheExtent, double cacheExtent,
int semanticChildCount, int semanticChildCount,
DragStartBehavior dragStartBehavior = DragStartBehavior.start, DragStartBehavior dragStartBehavior = DragStartBehavior.start,
ScrollViewKeyboardDismissBehavior keyboardDismissBehavior = ScrollViewKeyboardDismissBehavior.manual,
}) : assert(gridDelegate != null), }) : assert(gridDelegate != null),
assert(childrenDelegate != null), assert(childrenDelegate != null),
super( super(
...@@ -1695,6 +1712,7 @@ class GridView extends BoxScrollView { ...@@ -1695,6 +1712,7 @@ class GridView extends BoxScrollView {
cacheExtent: cacheExtent, cacheExtent: cacheExtent,
semanticChildCount: semanticChildCount, semanticChildCount: semanticChildCount,
dragStartBehavior: dragStartBehavior, dragStartBehavior: dragStartBehavior,
keyboardDismissBehavior: keyboardDismissBehavior,
); );
/// Creates a scrollable, 2D array of widgets with a fixed number of tiles in /// Creates a scrollable, 2D array of widgets with a fixed number of tiles in
...@@ -1731,6 +1749,7 @@ class GridView extends BoxScrollView { ...@@ -1731,6 +1749,7 @@ class GridView extends BoxScrollView {
List<Widget> children = const <Widget>[], List<Widget> children = const <Widget>[],
int semanticChildCount, int semanticChildCount,
DragStartBehavior dragStartBehavior = DragStartBehavior.start, DragStartBehavior dragStartBehavior = DragStartBehavior.start,
ScrollViewKeyboardDismissBehavior keyboardDismissBehavior = ScrollViewKeyboardDismissBehavior.manual,
}) : gridDelegate = SliverGridDelegateWithFixedCrossAxisCount( }) : gridDelegate = SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: crossAxisCount, crossAxisCount: crossAxisCount,
mainAxisSpacing: mainAxisSpacing, mainAxisSpacing: mainAxisSpacing,
...@@ -1755,6 +1774,7 @@ class GridView extends BoxScrollView { ...@@ -1755,6 +1774,7 @@ class GridView extends BoxScrollView {
cacheExtent: cacheExtent, cacheExtent: cacheExtent,
semanticChildCount: semanticChildCount ?? children.length, semanticChildCount: semanticChildCount ?? children.length,
dragStartBehavior: dragStartBehavior, dragStartBehavior: dragStartBehavior,
keyboardDismissBehavior: keyboardDismissBehavior,
); );
/// Creates a scrollable, 2D array of widgets with tiles that each have a /// Creates a scrollable, 2D array of widgets with tiles that each have a
...@@ -1790,6 +1810,7 @@ class GridView extends BoxScrollView { ...@@ -1790,6 +1810,7 @@ class GridView extends BoxScrollView {
List<Widget> children = const <Widget>[], List<Widget> children = const <Widget>[],
int semanticChildCount, int semanticChildCount,
DragStartBehavior dragStartBehavior = DragStartBehavior.start, DragStartBehavior dragStartBehavior = DragStartBehavior.start,
ScrollViewKeyboardDismissBehavior keyboardDismissBehavior = ScrollViewKeyboardDismissBehavior.manual,
}) : gridDelegate = SliverGridDelegateWithMaxCrossAxisExtent( }) : gridDelegate = SliverGridDelegateWithMaxCrossAxisExtent(
maxCrossAxisExtent: maxCrossAxisExtent, maxCrossAxisExtent: maxCrossAxisExtent,
mainAxisSpacing: mainAxisSpacing, mainAxisSpacing: mainAxisSpacing,
...@@ -1813,6 +1834,7 @@ class GridView extends BoxScrollView { ...@@ -1813,6 +1834,7 @@ class GridView extends BoxScrollView {
padding: padding, padding: padding,
semanticChildCount: semanticChildCount ?? children.length, semanticChildCount: semanticChildCount ?? children.length,
dragStartBehavior: dragStartBehavior, dragStartBehavior: dragStartBehavior,
keyboardDismissBehavior: keyboardDismissBehavior,
); );
/// A delegate that controls the layout of the children within the [GridView]. /// A delegate that controls the layout of the children within the [GridView].
......
...@@ -103,22 +103,303 @@ void main() { ...@@ -103,22 +103,303 @@ void main() {
final List<FocusNode> focusNodes = List<FocusNode>.generate(50, (int i) => FocusNode()); final List<FocusNode> focusNodes = List<FocusNode>.generate(50, (int i) => FocusNode());
await tester.pumpWidget(textFieldBoilerplate( await tester.pumpWidget(textFieldBoilerplate(
child: ListView( child: ListView(
padding: const EdgeInsets.all(0), padding: const EdgeInsets.all(0),
keyboardDismissBehavior: ScrollViewKeyboardDismissBehavior.onDrag, keyboardDismissBehavior: ScrollViewKeyboardDismissBehavior.onDrag,
children: focusNodes.map((FocusNode focusNode) { children: focusNodes.map((FocusNode focusNode) {
return Container( return Container(
height: 50, height: 50,
color: Colors.green, color: Colors.green,
child: TextField( child: TextField(
focusNode: focusNode, focusNode: focusNode,
style: const TextStyle( style: const TextStyle(
fontSize: 24, fontSize: 24,
fontWeight: FontWeight.bold, 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 Finder finder = find.byType(TextField).first;
final TextField textField = tester.widget(finder); final TextField textField = tester.widget(finder);
...@@ -161,6 +442,285 @@ void main() { ...@@ -161,6 +442,285 @@ void main() {
expect(textField.focusNode.hasFocus, isTrue); 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 { testWidgets('ListView restart ballistic activity out of range', (WidgetTester tester) async {
Widget buildListView(int n) { Widget buildListView(int n) {
return Directionality( return Directionality(
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment