在 Flutter 3.0 之后,我專案中的 ListView(reverse: true) 改變了行為。在舊版本中,它可以從底部拉動重繪 ,但現在不能,它只能從頂部重繪 。
我知道 pull_to_refresh 包,但我正在尋找像過去一樣的核心解決方案。Github 問題表明它是有意的,但我不想反轉 flutter 版本。
有沒有人知道 flutter 3 并且沒有額外的包?
RefreshIndicator(
key: refreshKey,
onRefresh: () async { onRefresh(); },
child: buildMessagesView(messages),
),
ListView buildMessagesView(List<MessageModel> messages) {
return ListView.builder(
scrollDirection: Axis.vertical,
reverse: true,
itemCount: messages.length,
itemBuilder: (_, index) {
return Message(message: messages.elementAt(index));
},
);
}
而 ListView reverse:true 我希望 Refresh Indicator 可以通過下拉來作業,但它不會..
更新 已解決。ScrollController的答案對我來說非常有用,我開發了一個簡單的小部件來包裝 ListView 以將其集成到專案中。您可以在此處找到代碼。 https://github.com/bnurd/reversed_listview_refresh
uj5u.com熱心網友回復:
我看到了github問題。實際上我在沒有重繪 指示器小部件的情況下意識到了這種行為。您可以使用滾動控制器。使用偵聽器創建 ScrollController 實體,將其附加到 ListView。在偵聽器中撰寫代碼,檢查滾動是否結束。這是監聽函式示例代碼:
void _onScroll() {
final maxScroll = _scrollController.position.maxScrollExtent;
final currentScroll = _scrollController.position.pixels;
if (maxScroll - currentScroll == 0) {'YOUR REFRESH CODE'}
}
這是將此偵聽器附加到 ScrollController 的方式:
late final _scrollController = ScrollController()..addListener(_onScroll);
重要提示:不要忘記將 scrollController 附加到 ListView。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/537883.html
標籤:扑列表显示刷新撤销
