Skip to content

Commit

Permalink
(fix): issue order when no SpOrder (#18)
Browse files Browse the repository at this point in the history
# Description

- fixing issue order when sp order is not filled
- update pubspec.lock

# Related issue

resolve #17
  • Loading branch information
nggepe authored Dec 29, 2024
1 parent 01670d0 commit f7c6c53
Show file tree
Hide file tree
Showing 5 changed files with 145 additions and 82 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
## [0.1.5]

- Fix bug order

## [0.1.4]

- Support constant children
Expand Down
82 changes: 53 additions & 29 deletions example/pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -37,18 +37,18 @@ packages:
dependency: transitive
description:
name: collection
sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c"
sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a
url: "https://pub.dev"
source: hosted
version: "1.17.1"
version: "1.18.0"
cupertino_icons:
dependency: "direct main"
description:
name: cupertino_icons
sha256: e35129dc44c9118cee2a5603506d823bab99c68393879edb440e0090d07586be
sha256: ba631d1c7f7bef6b729a622b7b752645a2d076dba9976925b8f25725a30e1ee6
url: "https://pub.dev"
source: hosted
version: "1.0.5"
version: "1.0.8"
fake_async:
dependency: transitive
description:
Expand All @@ -66,23 +66,39 @@ packages:
dependency: "direct dev"
description:
name: flutter_lints
sha256: "2118df84ef0c3ca93f96123a616ae8540879991b8b57af2f81b76a7ada49b2a4"
sha256: a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04
url: "https://pub.dev"
source: hosted
version: "2.0.2"
version: "2.0.3"
flutter_test:
dependency: "direct dev"
description: flutter
source: sdk
version: "0.0.0"
js:
leak_tracker:
dependency: transitive
description:
name: js
sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3
name: leak_tracker
sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05"
url: "https://pub.dev"
source: hosted
version: "0.6.7"
version: "10.0.5"
leak_tracker_flutter_testing:
dependency: transitive
description:
name: leak_tracker_flutter_testing
sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806"
url: "https://pub.dev"
source: hosted
version: "3.0.5"
leak_tracker_testing:
dependency: transitive
description:
name: leak_tracker_testing
sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3"
url: "https://pub.dev"
source: hosted
version: "3.0.1"
lints:
dependency: transitive
description:
Expand All @@ -95,41 +111,41 @@ packages:
dependency: transitive
description:
name: matcher
sha256: "6501fbd55da300384b768785b83e5ce66991266cec21af89ab9ae7f5ce1c4cbb"
sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb
url: "https://pub.dev"
source: hosted
version: "0.12.15"
version: "0.12.16+1"
material_color_utilities:
dependency: transitive
description:
name: material_color_utilities
sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724
sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec
url: "https://pub.dev"
source: hosted
version: "0.2.0"
version: "0.11.1"
meta:
dependency: transitive
description:
name: meta
sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3"
sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7
url: "https://pub.dev"
source: hosted
version: "1.9.1"
version: "1.15.0"
path:
dependency: transitive
description:
name: path
sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917"
sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af"
url: "https://pub.dev"
source: hosted
version: "1.8.3"
version: "1.9.0"
simple_grid:
dependency: "direct main"
description:
path: ".."
relative: true
source: path
version: "0.1.4"
version: "0.1.5"
sky_engine:
dependency: transitive
description: flutter
Expand All @@ -139,26 +155,26 @@ packages:
dependency: transitive
description:
name: source_span
sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250
sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c"
url: "https://pub.dev"
source: hosted
version: "1.9.1"
version: "1.10.0"
stack_trace:
dependency: transitive
description:
name: stack_trace
sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5
sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b"
url: "https://pub.dev"
source: hosted
version: "1.11.0"
version: "1.11.1"
stream_channel:
dependency: transitive
description:
name: stream_channel
sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8"
sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7
url: "https://pub.dev"
source: hosted
version: "2.1.1"
version: "2.1.2"
string_scanner:
dependency: transitive
description:
Expand All @@ -179,10 +195,10 @@ packages:
dependency: transitive
description:
name: test_api
sha256: eb6ac1540b26de412b3403a163d919ba86f6a973fe6cc50ae3541b80092fdcfb
sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb"
url: "https://pub.dev"
source: hosted
version: "0.5.1"
version: "0.7.2"
vector_math:
dependency: transitive
description:
Expand All @@ -191,6 +207,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.1.4"
vm_service:
dependency: transitive
description:
name: vm_service
sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d"
url: "https://pub.dev"
source: hosted
version: "14.2.5"
sdks:
dart: ">=3.0.5 <4.0.0"
flutter: ">=1.17.0"
dart: ">=3.3.0 <4.0.0"
flutter: ">=3.18.0-18.0.pre.54"
65 changes: 38 additions & 27 deletions lib/simple_grid.dart
Original file line number Diff line number Diff line change
Expand Up @@ -92,17 +92,7 @@ class SpGrid extends StatelessWidget {
runAlignment: runAlignment,
direction: direction,
textDirection: textDirection,
children: _childrenSort(
children,
width >= gridSize.xs && width < gridSize.sm
? "xs"
: width >= gridSize.sm && width < gridSize.md
? "sm"
: width >= gridSize.md && width < gridSize.lg
? "md"
: width >= gridSize.lg && width <= gridSize.xl
? "lg"
: "xl")
children: _childrenSort(children, _convertScreen(width))
.map((e) => Container(
padding: e.padding,
alignment: e.aligment,
Expand Down Expand Up @@ -136,26 +126,47 @@ class SpGrid extends StatelessWidget {
);
}

String _convertScreen(double width) {
return width >= gridSize.xs && width < gridSize.sm
? "xs"
: width >= gridSize.sm && width < gridSize.md
? "sm"
: width >= gridSize.md && width < gridSize.lg
? "md"
: width >= gridSize.lg && width <= gridSize.xl
? "lg"
: "xl";
}

///sorting children by type
List<SpGridItem> _childrenSort(List<SpGridItem> children, String type) {
List<SpGridItem> newChildren = List.from(children);
newChildren.sort((a, b) {
switch (type) {
case 'xs':
return a.order.xs?.compareTo(b.order.xs ?? children.length) ?? 0;
case 'sm':
return a.order.sm?.compareTo(b.order.sm ?? children.length) ?? 0;
case 'md':
return a.order.md?.compareTo(b.order.md ?? children.length) ?? 0;
case 'lg':
return a.order.lg?.compareTo(b.order.lg ?? children.length) ?? 0;
case 'xl':
return a.order.xl?.compareTo(b.order.xl ?? children.length) ?? 0;
default:
return children.length;
List<Map<String, dynamic>> indexedChildren = [
for (int index = 0; index < children.length; index++)
{'item': children[index], 'index': index}
];

indexedChildren.sort((a, b) {
int getOrder(dynamic item) {
switch (type) {
case 'xs':
return item['item'].order.xs ?? item['index'];
case 'sm':
return item['item'].order.sm ?? item['index'];
case 'md':
return item['item'].order.md ?? item['index'];
case 'lg':
return item['item'].order.lg ?? item['index'];
case 'xl':
return item['item'].order.xl ?? item['index'];
default:
return item['index'];
}
}

return getOrder(a).compareTo(getOrder(b));
});
return newChildren;

return indexedChildren.map((e) => e['item'] as SpGridItem).toList();
}
}

Expand Down
Loading

0 comments on commit f7c6c53

Please sign in to comment.