如何刷新 ListView.builder 颤动

Posted

技术标签:

【中文标题】如何刷新 ListView.builder 颤动【英文标题】:how to refresh ListView.builder flutter 【发布时间】:2020-05-12 14:46:41 【问题描述】:

向列表添加项目时如何刷新我的 ListView.builder?

ListView.builder(
      itemCount: propList.length,
      scrollDirection: Axis.horizontal,
      shrinkWrap: true,
      itemBuilder: (context,index)=> Text(propList[index]),
    )

我的按钮是

FlatButton(onPressed: ()propList.add('text');, child: Text('add'))

【问题讨论】:

【参考方案1】:

假设您已扩展 StatefulWidget,则每次更改状态时都必须调用 setState。例如:

setState(()  propList.add('text'); );

这是一个简单的例子:

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget 
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) => MaterialApp(home: MyList());


class MyList extends StatefulWidget 
  @override
  _MyListState createState() => _MyListState();


class _MyListState extends State<MyList> 
  List<String> propList = [];
  @override
  Widget build(BuildContext context) 
    return Scaffold(
      appBar: AppBar(
        title: Text('My List'),
      ),
      body: ListView.builder(
        itemCount: propList.length,
        scrollDirection: Axis.horizontal,
        shrinkWrap: true,
        itemBuilder: (context,index)=> Text(propList[index]),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () => setState(() => propList.add('text')),
        child: Icon(Icons.add),
      ), // This trailing comma makes auto-formatting nicer for build methods.
    );
  

【讨论】:

非常感谢,这很有效,并感谢您提供示例。 删除呢? setState(() propList.remove(widget.propName); );那没用 remove 方法采用您要删除的确切对象。或者您可以致电removeLast()@Husamuldeen 如何在 STATELESS 小部件上进行强制刷新.. @VrajendraSinghMandloi 您可以使用提供程序包并使用未来的构建器。在 Cosumer 中包装 ListView 构建器【参考方案2】:

你可以在 onPressed 中试试:setState(() propList.length; );

【讨论】:

以上是关于如何刷新 ListView.builder 颤动的主要内容,如果未能解决你的问题,请参考以下文章

如何在颤动中使我的文本与 listview.builder 一起滚动

如何在颤动中为 listview.builder 制作列表视图?

如何构建包含 ListView.Builder 的自定义行,以在颤动中构建 ElevatedButton?

如何在颤动中使用listview builder制作动态单选按钮?

颤动 listView.Builder 隐藏最后一个列表项的分隔符

如何在颤动中将 ListTile 连接到音频小部件