Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
F
flutter_clx_base
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
openSourceLibrary
flutter_clx_base
Commits
952a6e9a
提交
952a6e9a
authored
5月 04, 2023
作者:
张国庆
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
开发新 列表控件
上级
5bb2bb49
显示空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
206 行增加
和
8 行删除
+206
-8
sample.dart
example/lib/sample.dart
+7
-8
base_list_widget_test.dart
example/lib/sample/base_list_widget_test.dart
+67
-0
base_list_widget.dart
lib/widget/base_list_widget.dart
+128
-0
pubspec.yaml
pubspec.yaml
+4
-0
没有找到文件。
example/lib/sample.dart
浏览文件 @
952a6e9a
import
'package:flutter/material.dart'
;
import
'package:flutter/material.dart'
;
import
'package:flutter_clx_base/flutter_clx_base.dart'
;
import
'package:flutter_clx_base/flutter_clx_base.dart'
;
import
'package:flutter_clx_base_example/sample/base_list_widget_test.dart'
;
class
Sample
extends
StatelessWidget
{
class
Sample
extends
StatelessWidget
{
const
Sample
({
super
.
key
});
const
Sample
({
super
.
key
});
...
@@ -8,14 +9,12 @@ class Sample extends StatelessWidget {
...
@@ -8,14 +9,12 @@ class Sample extends StatelessWidget {
Widget
build
(
BuildContext
context
)
{
Widget
build
(
BuildContext
context
)
{
return
MyScaffold
(
return
MyScaffold
(
title:
'Sample'
,
title:
'Sample'
,
body:
const
Center
(
children:
[
child:
Text
(
'Sample'
),
GFButton
(
),
fullWidthButton:
true
,
floatingActionButton:
FloatingActionButton
(
onPressed:
()
=>
Get
.
to
(
const
BaseListWidgetTest
()),
onPressed:
()
{},
text:
'列表'
),
tooltip:
'Increment'
,
],
child:
const
Icon
(
Icons
.
add
),
),
);
);
}
}
}
}
example/lib/sample/base_list_widget_test.dart
0 → 100644
浏览文件 @
952a6e9a
import
'package:flutter/material.dart'
;
import
'package:flutter_clx_base/flutter_clx_base.dart'
;
import
'package:flutter_clx_base/widget/base_list_widget.dart'
;
class
BaseListWidgetTest
extends
StatefulWidget
{
const
BaseListWidgetTest
({
super
.
key
});
@override
State
<
BaseListWidgetTest
>
createState
()
=>
_BaseListWidgetTestState
();
}
class
_BaseListWidgetTestState
extends
State
<
BaseListWidgetTest
>
{
@override
Widget
build
(
BuildContext
context
)
{
return
MyScaffold
(
title:
'BaseListWidget'
,
body:
BaseListWidget
(
requestData:
(
page
,
pageSize
,
success
,
error
)
async
{
await
Future
.
delayed
(
const
Duration
(
seconds:
2
));
if
(
page
==
1
)
{
success
([
'1'
,
'2'
,
'3'
,
'4'
,
'5'
,
'6'
,
'7'
,
'8'
,
'9'
,
'10'
,
]);
}
else
{
success
([
'11'
,
'12'
,
'13'
,
'14'
,
'15'
,
'16'
,
'17'
,
'18'
,
'19'
,
'20'
,
]);
}
},
pageSize:
10
,
itemBuilder:
(
BuildContext
context
,
int
index
,
item
)
{
return
Container
(
decoration:
BoxDecoration
(
border:
Border
(
bottom:
BorderSide
(
color:
Colors
.
grey
.
withOpacity
(
0.5
),
width:
0.5
,
),
),
),
alignment:
Alignment
.
center
,
height:
100
,
child:
Text
(
item
.
toString
()),
);
},
),
);
}
}
lib/widget/base_list_widget.dart
0 → 100644
浏览文件 @
952a6e9a
import
'package:easy_refresh/easy_refresh.dart'
;
import
'package:flutter/material.dart'
;
import
'package:flutter_spinkit/flutter_spinkit.dart'
;
class
BaseListWidget
extends
StatefulWidget
{
final
RequestDataCallback
requestData
;
final
int
pageSize
;
final
ItemBuilder
itemBuilder
;
const
BaseListWidget
({
Key
?
key
,
required
this
.
requestData
,
required
this
.
pageSize
,
required
this
.
itemBuilder
,
})
:
super
(
key:
key
);
@override
State
<
BaseListWidget
>
createState
()
=>
_BaseListWidgetState
();
}
class
_BaseListWidgetState
extends
State
<
BaseListWidget
>
{
late
EasyRefreshController
_controller
;
final
List
<
dynamic
>
_dataList
=
[];
int
_page
=
1
;
int
_count
=
0
;
@override
void
initState
()
{
super
.
initState
();
_controller
=
EasyRefreshController
(
controlFinishRefresh:
true
,
controlFinishLoad:
true
,
);
}
@override
Widget
build
(
BuildContext
context
)
{
return
EasyRefresh
(
controller:
_controller
,
refreshOnStart:
true
,
refreshOnStartHeader:
BuilderHeader
(
triggerOffset:
70
,
clamping:
true
,
position:
IndicatorPosition
.
above
,
processedDuration:
Duration
.
zero
,
builder:
(
ctx
,
state
)
{
if
(
state
.
mode
==
IndicatorMode
.
inactive
||
state
.
mode
==
IndicatorMode
.
done
)
{
return
const
SizedBox
();
}
return
Container
(
padding:
const
EdgeInsets
.
only
(
bottom:
100
),
width:
double
.
infinity
,
height:
state
.
viewportDimension
,
alignment:
Alignment
.
center
,
child:
SpinKitFadingCube
(
size:
24
,
color:
Theme
.
of
(
context
).
primaryColor
,
),
);
},
),
onRefresh:
_onRefresh
,
onLoad:
_onLoad
,
child:
CustomScrollView
(
slivers:
[
SliverList
(
delegate:
SliverChildBuilderDelegate
(
(
context
,
index
)
{
return
widget
.
itemBuilder
(
context
,
index
,
_dataList
[
index
]);
},
childCount:
_count
,
),
),
],
),
);
}
Future
<
void
>
_onRefresh
()
async
{
_page
=
1
;
await
widget
.
requestData
(
_page
,
widget
.
pageSize
,
_requestSuccess
,
_requestError
);
}
Future
<
void
>
_onLoad
()
async
{
_page
++;
await
widget
.
requestData
(
_page
,
widget
.
pageSize
,
_requestSuccess
,
_requestError
);
}
void
_requestSuccess
(
List
?
result
)
{
if
(!
mounted
)
{
return
;
}
result
??=
[];
if
(
_page
==
1
)
{
setState
(()
{
_dataList
.
clear
();
_dataList
.
addAll
(
result
!);
_count
=
_dataList
.
length
;
});
_controller
.
finishRefresh
();
_controller
.
resetFooter
();
}
else
{
setState
(()
{
_dataList
.
addAll
(
result
!);
_count
=
_dataList
.
length
;
});
_controller
.
finishLoad
(
result
.
length
<=
widget
.
pageSize
?
IndicatorResult
.
noMore
:
IndicatorResult
.
success
);
}
}
void
_requestError
(
r
,
s
)
{
if
(!
mounted
)
{
return
;
}
}
}
typedef
RefreshCallback
=
Future
<
void
>
Function
();
typedef
LoadMoreCallback
=
Future
<
void
>
Function
();
typedef
SuccessCallback
=
Function
(
List
list
);
typedef
ErrorCallback
=
Function
(
int
code
,
String
msg
);
typedef
RequestDataCallback
=
Function
(
int
page
,
int
pageSize
,
SuccessCallback
success
,
ErrorCallback
error
);
typedef
ItemBuilder
=
Function
(
BuildContext
context
,
int
index
,
dynamic
item
);
pubspec.yaml
浏览文件 @
952a6e9a
...
@@ -48,6 +48,10 @@ dependencies:
...
@@ -48,6 +48,10 @@ dependencies:
image_picker
:
^0.8.6
image_picker
:
^0.8.6
#https://pub.dev/packages/flustars_flutter3
#https://pub.dev/packages/flustars_flutter3
flustars_flutter3
:
^3.0.0
flustars_flutter3
:
^3.0.0
#https://pub.dev/packages/easy_refresh
easy_refresh
:
^3.3.1
#https://pub.dev/packages/flutter_spinkit
flutter_spinkit
:
^5.1.0
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论