我正在创建一个无限滚动ListVIEw,并且我想使用_loadnames函数中的setState将_loadingState字符串从’loading …’更改为’loaded’,但是当从itemBuilder调用_loadnames时,在构建过程中会得到’setState错误”.使用Refreshindicator可以正常工作并更新项目,但滚动到底部会导致错误.我如何能够从ListVIEws构建器中调用_loadnames而不会出现错误或可以使用其他什么方法.
注意:不想使用redux或bloc.
class _HomePageState extends State<HomePage> { List<String> names = []; List<String> _shownnames = []; int currentPage = 0; int limit = 20; String _loadingState = 'loading'; bool loading = true; @overrIDe voID initState() { super.initState(); for (int i = 0; i < 200; i++) { names.add("hello $i"); } _loadnames(); } @overrIDe Widget build(BuildContext context) { // Todo: implement build return new Scaffold( appbar: new Appbar(Title: new Text('User')), body: Column(children: <Widget>[ Text(_loadingState), Expanded(child:_getListVIEwWidget()), ],) ); } Widget _getListVIEwWidget(){ ListVIEw lv = new ListVIEw.builder( itemCount: _shownnames.length, itemBuilder: (context, index){ if(index >= _shownnames.length - 5 && !loading){ _loadnames(); // Getting error when this is called } return ListTile( Title: Text(_shownnames[index]), ); }); Refreshindicator refreshindicator = new Refreshindicator( key: _refreshindicatorKey, onRefresh: (){ _loadnames(); return null; }, child: lv ); return refreshindicator; } _loadnames(){ loading = true; setState(() { _loadingState = 'loading...'; }); new Timer(const Duration(seconds: 5), () { setState(() { _shownnames.addAll(names.getRange(currentPage, currentPage + limit)); currentPage += limit; _loadingState = 'loaded'; }); loading = false; }); } }
解决方法:
更改_loadnames(){
至
_loadnames(){ loading = true; // setState(() { _loadingState = 'loading...'; // });
和
onRefresh: (){ _loadnames(); return null; },
至
onRefresh: (){ setState(() => _loadnames()); },
更新
_loadnames(){ loading = true; new Future.delayed(Duration.zero, () => setState(() { _loadingState = 'loading...'; }));
总结 以上是内存溢出为你收集整理的android-无限滚动listview-在构建过程中调用setState()或markNeedsBuild全部内容,希望文章能够帮你解决android-无限滚动listview-在构建过程中调用setState()或markNeedsBuild所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)