@@ -1294,6 +1294,55 @@ void main() {
1294
1294
expect (firstTapped, 0 );
1295
1295
expect (secondTapped, 1 );
1296
1296
});
1297
+
1298
+ testWidgets ('SliverGridRegularTileLayout.computeMaxScrollOffset handles 0 children' , (WidgetTester tester) async {
1299
+ // Regression test for https://github.com/flutter/flutter/issues/59663
1300
+ final ScrollController controller = ScrollController ();
1301
+
1302
+ // SliverGridDelegateWithFixedCrossAxisCount
1303
+ await tester.pumpWidget (MaterialApp (
1304
+ home: Scaffold (
1305
+ body: CustomScrollView (
1306
+ controller: controller,
1307
+ slivers: < Widget > [
1308
+ SliverGrid .builder (
1309
+ itemCount: 0 ,
1310
+ itemBuilder: (_, __) => Container (),
1311
+ gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount (
1312
+ crossAxisCount: 1 ,
1313
+ mainAxisSpacing: 10 ,
1314
+ childAspectRatio: 2.1 ,
1315
+ ),
1316
+ ),
1317
+ ],
1318
+ ),
1319
+ ),
1320
+ ));
1321
+
1322
+ // Verify correct scroll extent
1323
+ expect (controller.position.maxScrollExtent, 0.0 );
1324
+
1325
+ // SliverGridDelegateWithMaxCrossAxisExtent
1326
+ await tester.pumpWidget (MaterialApp (
1327
+ home: Scaffold (
1328
+ body: CustomScrollView (
1329
+ controller: controller,
1330
+ slivers: < Widget > [
1331
+ SliverGrid .builder (
1332
+ itemCount: 0 ,
1333
+ itemBuilder: (_, __) => Container (),
1334
+ gridDelegate: const SliverGridDelegateWithMaxCrossAxisExtent (
1335
+ maxCrossAxisExtent: 30 ,
1336
+ ),
1337
+ ),
1338
+ ],
1339
+ ),
1340
+ ),
1341
+ ));
1342
+
1343
+ // Verify correct scroll extent
1344
+ expect (controller.position.maxScrollExtent, 0.0 );
1345
+ });
1297
1346
}
1298
1347
1299
1348
bool isRight (Offset a, Offset b) => b.dx > a.dx;
0 commit comments