
3)Learning diary for flutter about android
发布日期:2021-05-08 17:48:38
浏览次数:14
分类:精选文章
本文共 3601 字,大约阅读时间需要 12 分钟。
Yerstoday,I worte an android program which only has one list view
Today,I'll add feature about load more to the list
The page is implement of statefulWidget
The class used to updates page state is extend of State
To reload page need calls the method named setState in State
Note that the list will be reloaded when the page reloaded
So the data of initializing for list should be written in the method named initState
ScrollController be used to listens list scrolls
void main() => runApp(MyApp());class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'Flutter Demo', theme: ThemeData( primarySwatch: Colors.blue, ), home: MyHomePage(title: 'Flutter Demo'), ); }}class MyHomePage extends StatefulWidget { MyHomePage({Key key, this.title}) : super(key: key); final String title; @override _MyHomePageState createState() => _MyHomePageState();}class _MyHomePageState extends Stateimplements ScrollListener { @override void initState() { // TODO: implement initState super.initState(); adapter = new MyLoadMoreListAdater.name(getData(), this); widgetList = adapter.getItemList(context); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text(widget.title), ), body: getLoadMoreList(context)); } MyLoadMoreListAdater adapter; List widgetList; getLoadMoreList(BuildContext context) { return ListView(children: widgetList, controller: adapter.getController()); } @override void onLoaderMore(MyBaseAdapter data) { // TODO: implement onLoaderMore print("加载更多"); List addItem = addData(adapter.data.length); adapter.data.addAll(addItem); int temp = widgetList.length; setState(() { widgetList = adapter.getItemList(context); print(temp); }); print("加载end"); }}
abstract class ScrollListener { void onLoaderMore(MyBaseAdapter data);}class MyLoadMoreListAdater extends MyBaseAdapter{ ScrollListener listener; MyLoadMoreListAdater(List data) : super(data); MyLoadMoreListAdater.name(List data, this.listener) : super(data); ScrollController getController() { ScrollController scrollController = new ScrollController(); scrollController.addListener(() { if (scrollController.position.pixels == scrollController.position.maxScrollExtent) { listener.onLoaderMore(this); print("下拉至最底部"); } }); return scrollController; } @override Widget getItem(BuildContext context, int pos) { // TODO: implement getItem return getLayout(data[pos], pos); }}
List getData(){ Listdata=[]; for(int i=0;i<10;i++){ data.add(new MyListData("item_title$i","item_content$i")); } return data;}List addData(int a) { List data=[]; for (int i=a; i
2)Next,used another list construction method recommended by official website that is more suitable for updating
getLoadMoreList(BuildContext context) {// return ListView(children: widgetList, controller: adapter.getController()); return ListView.builder(itemCount: widgetList.length,controller:adapter.getController(),itemBuilder: (BuildContext context,int pos){ return adapter.getItem(context, pos); }); } @override void onLoaderMore(MyBaseAdapter data) { // TODO: implement onLoaderMore print("加载更多"); ListaddItem = addData(adapter.data.length); adapter.data.addAll(addItem); int temp = widgetList.length; setState(() { for(int i=temp;i
发表评论
最新留言
关注你微信了!
[***.104.42.241]2025年03月27日 12时09分55秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
《非暴力沟通》总结
2019-03-06
《你当像鸟飞往你的山》总结
2019-03-06
《我是猫》总结
2019-03-06
《抗糖化书》总结
2019-03-06
apache虚拟主机配置
2019-03-06
光盘作为yum源
2019-03-06
PHP 正则表达式资料
2019-03-06
PHP官方网站及PHP手册
2019-03-06
mcrypt加密以及解密过程
2019-03-06
mysql连续聚合
2019-03-06
go等待N个线程完成操作总结
2019-03-06
消息队列 RocketMQ 并发量十万级
2019-03-06
ReactJs入门教程-精华版
2019-03-06
乐观锁悲观锁应用
2019-03-06
简单说说TCP三次握手、四次挥手机制
2019-03-06
.net Core 使用IHttpClientFactory请求
2019-03-06
多线程之旅(准备阶段)
2019-03-06
Python 之网络式编程
2019-03-06
MySql5.5安装步骤及MySql_Front视图配置
2019-03-06