Skip to content

Commit e93199c

Browse files
author
xuelong
committed
添加滚动条示例
1 parent 01e32ab commit e93199c

File tree

5 files changed

+122
-1
lines changed

5 files changed

+122
-1
lines changed

example/assets/locale/i18n_en.json

+2
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@
4141
"secondFloor": "Second floor",
4242
"secondFloorDescribe": "Imitate the second floor of Taobao",
4343
"welcomeToSecondFloor": "Welcome to second floor",
44+
"scrollBar": "ScrollBar",
45+
"scrollBarDescribe": "Add a scroll bar to the list",
4446
"qqGroup": "QQ group",
4547
"github": "Github",
4648
"name": "Name",

example/assets/locale/i18n_zh.json

+2
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@
4141
"secondFloor": "二楼",
4242
"secondFloorDescribe": "模仿淘宝二楼",
4343
"welcomeToSecondFloor": "欢迎光临二楼",
44+
"scrollBar": "滚动条",
45+
"scrollBarDescribe": "为列表添加滚动条",
4446
"qqGroup": "QQ群",
4547
"github": "Github",
4648
"name": "名字",
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
import 'dart:async';
2+
3+
import 'package:example/generated/translations.dart';
4+
import 'package:flutter/material.dart';
5+
import 'package:flutter_easyrefresh/easy_refresh.dart';
6+
7+
/// 滚动条页面
8+
class ScrollBarPage extends StatefulWidget {
9+
@override
10+
_ScrollBarPageState createState() => _ScrollBarPageState();
11+
}
12+
13+
class _ScrollBarPageState extends State<ScrollBarPage> {
14+
List<String> addStr = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "0"];
15+
List<String> str = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "0"];
16+
GlobalKey<EasyRefreshState> _easyRefreshKey =
17+
new GlobalKey<EasyRefreshState>();
18+
GlobalKey<RefreshHeaderState> _headerKey =
19+
new GlobalKey<RefreshHeaderState>();
20+
GlobalKey<RefreshFooterState> _footerKey =
21+
new GlobalKey<RefreshFooterState>();
22+
23+
@override
24+
Widget build(BuildContext context) {
25+
return Scaffold(
26+
appBar: AppBar(
27+
title: Text(Translations.of(context).text("scrollBar")),
28+
),
29+
body: Center(
30+
child: new EasyRefresh(
31+
key: _easyRefreshKey,
32+
builder: (context, child, scrollController){
33+
return Scrollbar(child: child);
34+
},
35+
refreshHeader: ClassicsHeader(
36+
key: _headerKey,
37+
refreshText: Translations.of(context).text("pullToRefresh"),
38+
refreshReadyText: Translations.of(context).text("releaseToRefresh"),
39+
refreshingText: Translations.of(context).text("refreshing") + "...",
40+
refreshedText: Translations.of(context).text("refreshed"),
41+
moreInfo: Translations.of(context).text("updateAt"),
42+
bgColor: Colors.transparent,
43+
textColor: Colors.black87,
44+
moreInfoColor: Colors.black54,
45+
showMore: true,
46+
),
47+
refreshFooter: ClassicsFooter(
48+
key: _footerKey,
49+
loadText: Translations.of(context).text("pushToLoad"),
50+
loadReadyText: Translations.of(context).text("releaseToLoad"),
51+
loadingText: Translations.of(context).text("loading"),
52+
loadedText: Translations.of(context).text("loaded"),
53+
noMoreText: Translations.of(context).text("noMore"),
54+
moreInfo: Translations.of(context).text("updateAt"),
55+
bgColor: Colors.transparent,
56+
textColor: Colors.black87,
57+
moreInfoColor: Colors.black54,
58+
showMore: true,
59+
),
60+
child: new ListView.builder(
61+
//ListView的Item
62+
itemCount: str.length,
63+
itemBuilder: (BuildContext context, int index) {
64+
return new Container(
65+
height: 70.0,
66+
child: Card(
67+
child: new Center(
68+
child: new Text(
69+
str[index],
70+
style: new TextStyle(fontSize: 18.0),
71+
),
72+
),
73+
));
74+
}),
75+
onRefresh: () async {
76+
await new Future.delayed(const Duration(seconds: 1), () {
77+
setState(() {
78+
str.clear();
79+
str.addAll(addStr);
80+
});
81+
});
82+
},
83+
loadMore: () async {
84+
await new Future.delayed(const Duration(seconds: 1), () {
85+
if (str.length < 20) {
86+
setState(() {
87+
str.addAll(addStr);
88+
});
89+
}
90+
});
91+
},
92+
)),
93+
);
94+
}
95+
}

example/lib/page/sample/second_floor_page.dart

-1
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,6 @@ class _SecondFloorPageState extends State<SecondFloorPage>
166166
child: Center(
167167
child: Icon(
168168
Icons.keyboard_arrow_up,
169-
size: 36.0,
170169
color: Colors.white,
171170
)),
172171
)

example/lib/page/sample_page.dart

+23
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import 'package:example/page/sample/float_page.dart';
88
import 'package:example/page/sample/list_embed_page.dart';
99
import 'package:example/page/sample/manual_control_page.dart';
1010
import 'package:example/page/sample/nested_scroll_view_page.dart';
11+
import 'package:example/page/sample/scrollbar_page.dart';
1112
import 'package:example/page/sample/second_floor_page.dart';
1213
import 'package:example/page/sample/sliver_page.dart';
1314
import 'package:example/page/sample/swiper_page.dart';
@@ -338,6 +339,28 @@ class _SamplePageState extends State<SamplePage>
338339
color: Colors.orange,
339340
),
340341
),
342+
Container(
343+
width: double.infinity,
344+
height: 0.5,
345+
padding: EdgeInsets.only(left: 5.0, right: 5.0),
346+
child: Container(
347+
color: Colors.black12,
348+
),
349+
),
350+
ListItem(
351+
title: Translations.of(context).text("scrollBar"),
352+
describe: Translations.of(context).text("scrollBarDescribe"),
353+
onPressed: () {
354+
Navigator.push(context,
355+
MaterialPageRoute(builder: (BuildContext context) {
356+
return ScrollBarPage();
357+
}));
358+
},
359+
icon: Icon(
360+
Icons.border_right,
361+
color: Colors.orange,
362+
),
363+
),
341364
],
342365
),
343366
),

0 commit comments

Comments
 (0)