From 43676d194ff8e5075adbed4683dab4819e53311e Mon Sep 17 00:00:00 2001 From: TheEthicalBoy <98978078+ndonkoHenri@users.noreply.github.com> Date: Mon, 8 Jan 2024 20:02:32 +0100 Subject: [PATCH] `ListView.reverse` and `GridView.reverse` props (#2335) * ScrollableControl.reverse * ListView.reverse * GridView.reverse --- package/lib/src/controls/grid_view.dart | 2 ++ package/lib/src/controls/list_view.dart | 3 +++ .../packages/flet-core/src/flet_core/grid_view.py | 2 ++ .../packages/flet-core/src/flet_core/list_view.py | 2 ++ .../flet-core/src/flet_core/scrollable_control.py | 15 +++++++++++++-- 5 files changed, 22 insertions(+), 2 deletions(-) diff --git a/package/lib/src/controls/grid_view.dart b/package/lib/src/controls/grid_view.dart index 34c77b105..95403508e 100644 --- a/package/lib/src/controls/grid_view.dart +++ b/package/lib/src/controls/grid_view.dart @@ -56,6 +56,7 @@ class _GridViewControlState extends State { final runSpacing = widget.control.attrDouble("runSpacing", 10)!; final padding = parseEdgeInsets(widget.control, "padding"); final childAspectRatio = widget.control.attrDouble("childAspectRatio", 1)!; + final reverse = widget.control.attrBool("reverse", false)!; List visibleControls = widget.children.where((c) => c.isVisible).toList(); @@ -84,6 +85,7 @@ class _GridViewControlState extends State { Widget child = GridView.builder( scrollDirection: horizontal ? Axis.horizontal : Axis.vertical, controller: _controller, + reverse: reverse, shrinkWrap: shrinkWrap, padding: padding, gridDelegate: gridDelegate, diff --git a/package/lib/src/controls/list_view.dart b/package/lib/src/controls/list_view.dart index ffea22d18..784e2ce45 100644 --- a/package/lib/src/controls/list_view.dart +++ b/package/lib/src/controls/list_view.dart @@ -56,6 +56,7 @@ class _ListViewControlState extends State { final firstItemPrototype = widget.control.attrBool("firstItemPrototype", false)!; final padding = parseEdgeInsets(widget.control, "padding"); + final reverse = widget.control.attrBool("reverse", false)!; List visibleControls = widget.children.where((c) => c.isVisible).toList(); @@ -72,6 +73,7 @@ class _ListViewControlState extends State { Widget child = spacing > 0 ? ListView.separated( controller: _controller, + reverse: reverse, scrollDirection: horizontal ? Axis.horizontal : Axis.vertical, shrinkWrap: shrinkWrap, padding: padding, @@ -94,6 +96,7 @@ class _ListViewControlState extends State { ) : ListView.builder( controller: _controller, + reverse: reverse, scrollDirection: horizontal ? Axis.horizontal : Axis.vertical, shrinkWrap: shrinkWrap, padding: padding, diff --git a/sdk/python/packages/flet-core/src/flet_core/grid_view.py b/sdk/python/packages/flet-core/src/flet_core/grid_view.py index 32378e8f8..7c31315bd 100644 --- a/sdk/python/packages/flet-core/src/flet_core/grid_view.py +++ b/sdk/python/packages/flet-core/src/flet_core/grid_view.py @@ -93,6 +93,7 @@ def __init__( # ScrollableControl specific # auto_scroll: Optional[bool] = None, + reverse: Optional[bool] = None, on_scroll_interval: OptionalNumber = None, on_scroll: Any = None, # @@ -138,6 +139,7 @@ def __init__( ScrollableControl.__init__( self, auto_scroll=auto_scroll, + reverse=reverse, on_scroll_interval=on_scroll_interval, on_scroll=on_scroll, ) diff --git a/sdk/python/packages/flet-core/src/flet_core/list_view.py b/sdk/python/packages/flet-core/src/flet_core/list_view.py index 5826c5fd7..4e6f55be6 100644 --- a/sdk/python/packages/flet-core/src/flet_core/list_view.py +++ b/sdk/python/packages/flet-core/src/flet_core/list_view.py @@ -85,6 +85,7 @@ def __init__( # ScrollableControl specific # auto_scroll: Optional[bool] = None, + reverse: Optional[bool] = None, on_scroll_interval: OptionalNumber = None, on_scroll: Any = None, # @@ -129,6 +130,7 @@ def __init__( ScrollableControl.__init__( self, auto_scroll=auto_scroll, + reverse=reverse, on_scroll_interval=on_scroll_interval, on_scroll=on_scroll, ) diff --git a/sdk/python/packages/flet-core/src/flet_core/scrollable_control.py b/sdk/python/packages/flet-core/src/flet_core/scrollable_control.py index 7968d4827..0fa62ad7c 100644 --- a/sdk/python/packages/flet-core/src/flet_core/scrollable_control.py +++ b/sdk/python/packages/flet-core/src/flet_core/scrollable_control.py @@ -14,6 +14,7 @@ def __init__( self, scroll: Optional[ScrollMode] = None, auto_scroll: Optional[bool] = None, + reverse: Optional[bool] = None, on_scroll_interval: OptionalNumber = None, on_scroll: Any = None, ): @@ -26,6 +27,7 @@ def convert_on_scroll_event_data(e): self.scroll = scroll self.auto_scroll = auto_scroll + self.reverse = reverse self.on_scroll_interval = on_scroll_interval self.on_scroll = on_scroll @@ -95,13 +97,22 @@ def __set_scroll(self, value: Optional[ScrollModeString]): # auto_scroll @property - def auto_scroll(self) -> Optional[bool]: - return self._get_attr("autoScroll") + def auto_scroll(self) -> Optional[str]: + return self._get_attr("autoScroll", data_type="bool", def_value=False) @auto_scroll.setter def auto_scroll(self, value: Optional[bool]): self._set_attr("autoScroll", value) + # reverse + @property + def reverse(self) -> Optional[bool]: + return self._get_attr("reverse", data_type="bool", def_value=False) + + @reverse.setter + def reverse(self, value: Optional[bool]): + self._set_attr("reverse", value) + # on_scroll_interval @property def on_scroll_interval(self) -> OptionalNumber: