Unverified Commit 4a3ab682 authored by Chinmay Kabi's avatar Chinmay Kabi Committed by GitHub

Fix DataTable example not being scrollable (#131556)

parent 0770c60a
...@@ -292,7 +292,6 @@ final Set<String> _knownMissingTests = <String>{ ...@@ -292,7 +292,6 @@ final Set<String> _knownMissingTests = <String>{
'examples/api/test/material/stepper/stepper.controls_builder.0_test.dart', 'examples/api/test/material/stepper/stepper.controls_builder.0_test.dart',
'examples/api/test/material/stepper/stepper.0_test.dart', 'examples/api/test/material/stepper/stepper.0_test.dart',
'examples/api/test/material/flexible_space_bar/flexible_space_bar.0_test.dart', 'examples/api/test/material/flexible_space_bar/flexible_space_bar.0_test.dart',
'examples/api/test/material/data_table/data_table.1_test.dart',
'examples/api/test/material/data_table/data_table.0_test.dart', 'examples/api/test/material/data_table/data_table.0_test.dart',
'examples/api/test/material/floating_action_button_location/standard_fab_location.0_test.dart', 'examples/api/test/material/floating_action_button_location/standard_fab_location.0_test.dart',
'examples/api/test/material/chip/deletable_chip_attributes.on_deleted.0_test.dart', 'examples/api/test/material/chip/deletable_chip_attributes.on_deleted.0_test.dart',
......
...@@ -30,13 +30,12 @@ class DataTableExample extends StatefulWidget { ...@@ -30,13 +30,12 @@ class DataTableExample extends StatefulWidget {
} }
class _DataTableExampleState extends State<DataTableExample> { class _DataTableExampleState extends State<DataTableExample> {
static const int numItems = 10; static const int numItems = 20;
List<bool> selected = List<bool>.generate(numItems, (int index) => false); List<bool> selected = List<bool>.generate(numItems, (int index) => false);
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return SizedBox( return SingleChildScrollView(
width: double.infinity,
child: DataTable( child: DataTable(
columns: const <DataColumn>[ columns: const <DataColumn>[
DataColumn( DataColumn(
......
// Copyright 2014 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'package:flutter/material.dart';
import 'package:flutter_api_samples/material/data_table/data_table.1.dart' as example;
import 'package:flutter_test/flutter_test.dart';
void main() {
testWidgets('DataTable is scrollable', (WidgetTester tester) async {
await tester.pumpWidget(
const example.DataTableExampleApp(),
);
expect(find.byType(SingleChildScrollView), findsOneWidget);
expect(tester.getTopLeft(find.text('Row 5')), const Offset(66.0, 366.0));
await tester.drag(find.byType(SingleChildScrollView), const Offset(0.0, -200.0));
await tester.pumpAndSettle();
expect(tester.getTopLeft(find.text('Row 5')), const Offset(66.0, 186.0));
});
}
...@@ -357,6 +357,13 @@ class DataCell { ...@@ -357,6 +357,13 @@ class DataCell {
/// [PaginatedDataTable] which automatically splits the data into /// [PaginatedDataTable] which automatically splits the data into
/// multiple pages. /// multiple pages.
/// ///
/// ## Performance considerations when wrapping [DataTable] with [SingleChildScrollView]
///
/// Wrapping a [DataTable] with [SingleChildScrollView] is expensive as [SingleChildScrollView]
/// mounts and paints the entire [DataTable] even when only some rows are visible. If scrolling in
/// one direction is necessary, then consider using a [CustomScrollView], otherwise use [PaginatedDataTable]
/// to split the data into smaller pages.
///
/// {@tool dartpad} /// {@tool dartpad}
/// This sample shows how to display a [DataTable] with three columns: name, age, and /// This sample shows how to display a [DataTable] with three columns: name, age, and
/// role. The columns are defined by three [DataColumn] objects. The table /// role. The columns are defined by three [DataColumn] objects. The table
......
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