Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
F
flutter_clx_base
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
openSourceLibrary
flutter_clx_base
Commits
d9108b8f
提交
d9108b8f
authored
11月 25, 2025
作者:
史晓晨
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat:静默下拉刷新(①不执行下拉刷新动画②刷新冲突处理-静默和普通同时触发)
上级
3bcfda1b
显示空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
32 行增加
和
9 行删除
+32
-9
base_list_widget_test.dart
example/lib/sample/base_list_widget_test.dart
+10
-2
base_list_widget.dart
lib/widget/base_list_widget.dart
+22
-7
没有找到文件。
example/lib/sample/base_list_widget_test.dart
浏览文件 @
d9108b8f
...
...
@@ -17,14 +17,22 @@ class _BaseListWidgetTestState extends State<BaseListWidgetTest> {
Widget
build
(
BuildContext
context
)
{
return
MyScaffold
(
title:
'BaseListWidget'
,
floatingActionButton:
Row
(
children:
[
floatingActionButton:
Row
(
children:
[
TextButton
(
onPressed:
()
{
controller
.
reload
();
},
child:
const
Text
(
"下拉刷新"
),
),
],),
TextButton
(
onPressed:
()
{
controller
.
reloadSilent
();
},
child:
const
Text
(
"下拉刷新-静默"
),
),
],
),
body:
BaseListWidget
(
controller:
controller
,
requestData:
(
page
,
pageSize
,
success
,
error
)
async
{
...
...
lib/widget/base_list_widget.dart
浏览文件 @
d9108b8f
import
'package:flutter/material.dart'
;
import
'package:flutter/widgets.dart'
;
import
'package:flutter_clx_base/flutter_clx_base.dart'
;
import
'package:flutter_clx_base/widget/state_layout.dart'
;
import
'package:flutter_spinkit/flutter_spinkit.dart'
;
...
...
@@ -37,6 +38,7 @@ class BaseListWidget extends StatefulWidget {
class
_BaseListWidgetState
extends
State
<
BaseListWidget
>
{
late
BaseListController
_controller
;
ScrollController
_scrollController
=
ScrollController
();
final
_CIProperties
_headerProperties
=
_CIProperties
(
name:
'Header'
,
alignment:
MainAxisAlignment
.
center
,
...
...
@@ -121,7 +123,10 @@ class _BaseListWidgetState extends State<BaseListWidget> {
}
Widget
buildScrollView
()
{
return
CustomScrollView
(
slivers:
buildSlivers
());
return
CustomScrollView
(
slivers:
buildSlivers
(),
controller:
_scrollController
,
);
}
Future
<
void
>
_onRefresh
()
async
{
...
...
@@ -129,19 +134,23 @@ class _BaseListWidgetState extends State<BaseListWidget> {
_callReloading
=
false
;
// 重置自动刷新标识
_stateType
=
StateType
.
loading
;
_page
=
1
;
await
widget
.
requestData
(
_page
,
widget
.
pageSize
,
_requestSuccess
,
_requestError
);
await
widget
.
requestData
(
_page
,
widget
.
pageSize
,
(
List
?
list
)
=>
_requestSuccess
(
list
,
resultPage:
1
)
,
_requestError
);
}
Future
<
void
>
_onLoad
()
async
{
_stateType
=
StateType
.
loading
;
_page
++
;
var
cPage
=
++
_page
;
await
widget
.
requestData
(
_page
,
widget
.
pageSize
,
_requestSuccess
,
_requestError
);
_page
,
widget
.
pageSize
,
(
List
?
list
)
=>
_requestSuccess
(
list
,
resultPage:
cPage
),
_requestError
);
}
void
_requestSuccess
(
List
?
result
)
{
if
(!
mounted
)
{
void
_requestSuccess
(
List
?
result
,
{
int
?
resultPage
})
{
if
(!
mounted
||
_page
!=
resultPage
)
{
// 多次触发刷新数据,_page和resultPage不一致,不需要刷新
return
;
}
result
??=
[];
...
...
@@ -340,6 +349,12 @@ class BaseListController {
_controller
.
callRefresh
(
force:
true
);
}
// 静默重新加载数据
void
reloadSilent
()
async
{
_listState
?.
_scrollController
.
jumpTo
(
0
);
_listState
?.
_onRefresh
();
}
// 刷新单个数据
void
notifySingleItem
(
index
,
item
)
{
_listState
?.
notifySingleItem
(
index
,
item
);
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论