From 2b906ec3a9250ebe159a8a4e4ec4ac876baee039 Mon Sep 17 00:00:00 2001 From: riccardocucia Date: Fri, 15 Nov 2024 11:31:08 +0100 Subject: [PATCH] Test fix performance --- example/lib/main.dart | 8 ++-- example/pubspec.lock | 24 +++++------ lib/src/widget_internal/table.dart | 68 +++++++++++++++--------------- 3 files changed, 50 insertions(+), 50 deletions(-) diff --git a/example/lib/main.dart b/example/lib/main.dart index b58c705..5a8805f 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -130,10 +130,10 @@ class _MyHomePageState extends State<_MyHomePage> { ); } - static const int columnsCount = 20; - static const int subColumnsCount = 2; - static const int rowsCount = 6; - static const int subRowsCount = 3; + static const int columnsCount = 6; + static const int subColumnsCount = 0; + static const int rowsCount = 100; + static const int subRowsCount = 100; static const int totalColumns = columnsCount + subColumnsCount; List _generateRows(int quantity, {int depth = 0}) { diff --git a/example/pubspec.lock b/example/pubspec.lock index fd34082..3866d46 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -102,18 +102,18 @@ packages: dependency: transitive description: name: leak_tracker - sha256: "7f0df31977cb2c0b88585095d168e689669a2cc9b97c309665e3386f3e9d341a" + sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05" url: "https://pub.dev" source: hosted - version: "10.0.4" + version: "10.0.5" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: "06e98f569d004c1315b991ded39924b21af84cf14cc94791b8aea337d25b57f8" + sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806" url: "https://pub.dev" source: hosted - version: "3.0.3" + version: "3.0.5" leak_tracker_testing: dependency: transitive description: @@ -150,18 +150,18 @@ packages: dependency: transitive description: name: material_color_utilities - sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a" + sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec url: "https://pub.dev" source: hosted - version: "0.8.0" + version: "0.11.1" meta: dependency: transitive description: name: meta - sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136" + sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7 url: "https://pub.dev" source: hosted - version: "1.12.0" + version: "1.15.0" nested: dependency: transitive description: @@ -235,10 +235,10 @@ packages: dependency: transitive description: name: test_api - sha256: "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f" + sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb" url: "https://pub.dev" source: hosted - version: "0.7.0" + version: "0.7.2" tint: dependency: transitive description: @@ -259,10 +259,10 @@ packages: dependency: transitive description: name: vm_service - sha256: "3923c89304b715fb1eb6423f017651664a03bf5f4b29983627c4da791f74a4ec" + sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d" url: "https://pub.dev" source: hosted - version: "14.2.1" + version: "14.2.5" yaml: dependency: transitive description: diff --git a/lib/src/widget_internal/table.dart b/lib/src/widget_internal/table.dart index 7e10356..e437e6e 100644 --- a/lib/src/widget_internal/table.dart +++ b/lib/src/widget_internal/table.dart @@ -98,31 +98,28 @@ class InternalTableState extends State { children: [ Builder( builder: (context) { - final Widget child = ListView( + final Widget child = ListView.builder( controller: _firstColumnController, physics: const ClampingScrollPhysics(), - children: data.allRows - .map( - (e) => ChangeNotifierProvider.value( - value: e, - builder: (context, child) => ExpandableTableCellWidget( - row: context.watch(), - height: context.watch().height ?? - data.defaultsRowHeight, - width: data.firstColumnWidth, - builder: context - .watch() - .firstCell - .build, - onTap: () { - if (!e.disableDefaultOnTapExpansion) { - e.toggleExpand(); - } - }, - ), - ), - ) - .toList(), + itemCount: data.allRows.length, + itemBuilder: (context, index) => ChangeNotifierProvider.value( + value: data.allRows[index], + builder: (context, child) => ExpandableTableCellWidget( + row: context.watch(), + height: context.watch().height ?? + data.defaultsRowHeight, + width: data.firstColumnWidth, + builder: context + .watch() + .firstCell + .build, + onTap: () { + if (!data.allRows[index].disableDefaultOnTapExpansion) { + data.allRows[index].toggleExpand(); + } + }, + ), + ), ); return SizedBox( width: data.firstColumnWidth, @@ -165,14 +162,11 @@ class InternalTableState extends State { fadeInCurve: data.scrollShadowFadeInCurve, fadeOutCurve: data.scrollShadowFadeOutCurve, duration: data.scrollShadowDuration, - child: ListView( + child: ListView.builder( controller: _restColumnsController, physics: const ClampingScrollPhysics(), - children: data.allRows - .map( - (e) => _buildRowCells(data, e), - ) - .toList(), + itemCount: data.allRows.length, + itemBuilder: (context, index) => _buildRowCells(data, data.allRows[index]), ), ), ), @@ -277,11 +271,17 @@ class InternalTableState extends State { fadeInCurve: data.scrollShadowFadeInCurve, fadeOutCurve: data.scrollShadowFadeOutCurve, duration: data.scrollShadowDuration, - child: ListView( - controller: _headController, - physics: const ClampingScrollPhysics(), - scrollDirection: Axis.horizontal, - children: _buildHeaderCells(data), + child: Builder( + builder: (context) { + final headers = _buildHeaderCells(data); + return ListView.builder( + controller: _headController, + physics: const ClampingScrollPhysics(), + scrollDirection: Axis.horizontal, + itemCount: headers.length, + itemBuilder: (context, index) => headers[index], + ); + } ), ), ),