jjzjj

listview - Flutter 在 ListView 中只重建一行

coder 2023-07-24 原文

我的应用程序中有一个 ListView 。每行都有一些仅影响同一行的按钮。我不想刷新整个 Listview。当我在点击按钮时调用 setState() 时,会导致整个 Listview 刷新。

如何在行内的同一行点击按钮上进行刷新?

在我的代码中,点击一个按钮必须导致同一个按钮的颜色发生变化:

....
....
....

List<mPlay> playList = new List();

....
....
....

@override
  Widget build(BuildContext context) {
    return new Directionality(
        textDirection: globals.textDirection,
        child: new Scaffold(
            key: globalKey,
            body: (playList != null && playList.length > 0)
                ? new SmartRefresher(
                    headerBuilder: _buildHeader,
                    enablePullDown: true,
                    enablePullUp: true,
                    onRefresh: _onRefresh,
                    onOffsetChange: _onOffsetCallback,
                    child: new ListView.builder(
                      padding: const EdgeInsets.all(0),
                      itemCount: playList.length,
                      itemBuilder: (context, i) {
                        return _buildRow(playList[i], i);
                      },
                    ))
                : EmptyWidget()));
  }

  Widget _buildRow(mPlay play, int index) {
  return new Card(
        child: new Container(
        child: new Row(children: <Widget>[
        new InkWell(
                            child: new IconButton(
                                icon: Icon(
                                  Icons.group_add,
                                  color: play.isContributed == "1"
                                      ? Colors.blueAccent
                                      : Colors.black,
                                ),                                
                                onPressed: () {
                                  play.isContributed =
                                      play.isContributed == "0" ? "1" : "0";
                                  setState(() {
                                    playList[index].isContributed =
                                        play.isContributed;
                                  });
                                }))
        ])
        ))


  }

最佳答案

您必须使用范围模型、BLoC、redux 等状态管理方法。 Checkout this post to get a proper idea

关于listview - Flutter 在 ListView 中只重建一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54737271/

有关listview - Flutter 在 ListView 中只重建一行的更多相关文章

  1. ruby - 如何使用 Ruby 从 CSV 中删除一行 - 2

    给定以下CSV文件,您将如何删除列“foo”中包含单词“true”的所有行?Date,foo,bar2014/10/31,true,derp2014/10/31,false,derp我有一个可行的解决方案,但它需要制作一个辅助CSV对象csv_no_foo@csv=CSV.read(@csvfile,headers:true)#http://bit.ly/1mSlqfA@headers=CSV.open(@csvfile,'r',:headers=>true).read.headers#MakeanewCSV@csv_no_foo=CSV.new(@headers)@csv.eachd

  2. 一行中的 while block 的 Ruby 语法 - 2

    请问,一行whileblock的Ruby语法是什么? 最佳答案 例如putsa[i+=1]whilei 关于一行中的whileblock的Ruby语法,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/21712232/

  3. ruby - 如何在 Ruby 中只执行一次方法?有静态变量吗? - 2

    我写了一个脚本,其中包含一些方法定义,没有类和一些公共(public)代码。其中一些方法执行一些非常耗时的shell程序。然而,这些shell程序只需要在第一次调用该方法时执行。现在在C中,我会在每个方法中声明一个静态变量,以确保这些程序只执行一次。我怎么能在Ruby中做到这一点? 最佳答案 ruby中有一个成语:x||=y。defsomething@something||=calculate_somethingendprivatedefcalculate_something#somelongprocessend但是如果您的“长时间

  4. ruby - 如何将文本文件读入数组数组(每个子数组都是文本文件中的一行?) - 2

    所以我在Ruby方面几乎是个新手,我整理了一个代码来解决MinCut问题(对于一个作业,是的——我整理并测试了那部分代码),并且我无法弄清楚如何读取文件并将其放入数组数组中。我有一个文本文件要阅读,其中包含不同长度的列,如下所示137791642123134348123134109我想将它读入一个二维数组,其中每一行和每一列都被拆分,每一行都进入一个数组。因此,上述示例的结果数组将是:[[1,37,79,164],[2,123,134],[3,48,123,134,109]]我读取文本文件的代码如下:defread_array(file,count)int_array=[]File.f

  5. ruby - 如何在 Ruby 的 OptionParser 中只获得长选项? - 2

    我在Ruby(test.rb)中有这么简单的代码:#!/usr/bin/envrubyrequire'optparse'OptionParser.newdo|option|option.on("--sort","Sortdata")doputs"--sortpassed"endend.parse!然后我运行它:./test.rb-s并得到:--sortpassed我错过了什么吗?我希望唯一的--sort(长)选项有效,而不是短选项。如何获取? 最佳答案 我在optparse.rb的第1378-1380行中找到了导致此行为的代码:#i

  6. Flutter 环境变量配置和flutter doctor中的错误解决 - 2

    一、环境变量右键点击我的电脑-属性:然后找到环境变量 1.Android的SDK不在C盘的话需要额外配这个到用户环境变量:ANDROID_HOMED:\AndroidSDK2.然后在系统变量:Path中添加一条这样的值        D:\Flutter\flutter\bin             这个值写flutter包解压的实际地址即可 3.在系统变量中添加两个镜像变量:        变量名:FLUTTER_STORAGE_BASE_URL      变量值:https://storage.flutter-io.cn        变量名:PUB_HOSTED_URL      变量

  7. Ruby 命令行一行 sub 与 scan - 2

    我怎么可以ruby-pe"sub/.*{((\d+\.){3}).*/,'\115'"但如果我尝试scan而不是sub我明白了-e:1:in':undefinedmethodscan'formain:Object(NoMethodError)这令人困惑,因为sub不是Object上的方法要么。我也尝试过Perl方式,比如ruby-ne"/.*/;puts$1"但这并没有成功。我在哪里可以找到有关此内容的文档? 最佳答案 subisamethodonKernel,一个实例方法全局可用的模块。此版本的方法对全局变量$_进行操作,其中co

  8. ruby-on-rails - 是否可以在部分中只放置一个 rails 表单元素? - 2

    我的应用有一个选择框供用户选择“地点”。如您所料,此选择框位于一个表单中。我还在页面上的某处执行了一个操作,该操作通过AJAX创建了一个新场所。创建新field后,我想更新field选择框以反射(reflect)这一点。我的解决方案是将选择框放在局部中,并从Controller中的创建操作中呈现局部。'venue/venue_select_box'%>局部看起来像这样:'Selectavenue'%>其中f是表单引用:问题是f在部分中未定义,所以我得到一个错误。一种解决方案是包括整个表格,但我觉得没有必要这样做,因为我没有更新整个表格。关于如何解决这个问题有什么想法吗?

  9. ruby-on-rails - 你能检查 ruby​​ on rails 中同一行的多个值是否相同吗? - 2

    基本上,我正在尝试检查我的6个值是否相同。我试着把它们串起来:ifval1==val2==val3==val4==val5==val6#...end但这会出错。这可能使用另一种方法吗?谢谢 最佳答案 试试这个:if[val1,val2,val3,val4,val5,val6].uniq.count==1#...end如果你喜欢花哨的,你可以试试这个unless[val2,val3,val4,val5,val6].find{|x|x!=val1}#...end一旦找到不等于val1的元素,上面的代码就会停止,否则,将执行该block。

  10. Ruby 一行 if return 语句 - 2

    有没有办法在Ruby上缩短这一行?if(res=bla_permission_invalid).is_a?Stringthenreturnresend上defsomething#manythingsthatlikethisif(res=bla_permission_invalid).is_a?Stringthenreturnresend#dosomethingelsereturntrueend当bla_permission_invalid的内容是这样的时候defbla_permission_invalidreturninvalid_address_report_funcifinvali

随机推荐