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 State
implements 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(){  List 
data=[]; 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("加载更多");    List
addItem = addData(adapter.data.length); adapter.data.addAll(addItem); int temp = widgetList.length; setState(() { for(int i=temp;i

 

上一篇:4)Learning diary for Flutter about problem
下一篇:2)Learning diary for flutter about problems

发表评论

最新留言

关注你微信了!
[***.104.42.241]2025年03月27日 12时09分55秒