【问题标题】:flutter: Variable can't be used as a setter because it's final颤振:变量不能用作设置器,因为它是最终的
【发布时间】:2022-02-26 03:09:04
【问题描述】:
List<TestModel> lists = List();

FutureBuilder<List<TestModel>>(
          future: testNetworkRepository.fetchAlltext(TestModel.testKey),
          builder: (context, snapshot){
            if(snapshot.hasData){
              lists = snapshot.data;
              return Contanier();
            }
          }
)

Future _editText(int index, String testKey) async {
    await showDialog(
        context: context,
        child: SimpleDialog(
          children: [
            SimpleDialogOption(
              child: TextButton(
                    child: Text("Edit"),
                    onPressed: (){
                      setState(() {
                        lists[index].text = editTextController.text; <- error occured
                      });
                    },
                  ),
            )
          ],
        )
    );
  }

这是我的代码。我要编辑lists[index].text

但是发生了错误。

'text' 不能用作 setter,因为它是 final。

我该如何解决这个问题?

【问题讨论】:

  • 你能粘贴整个代码吗?

标签: flutter dart


【解决方案1】:

发生此错误是因为 TestModel 类的 text 属性是 final。 最终对象不应该在 Flutter 中更改。 要解决此问题,您应该转到 TestModel 类并从 text 属性中删除 final。

【讨论】:

  • 删除 final 后出现此错误:Can't define a const constructor for a class with non-final fields.
【解决方案2】:

进入数据类模型改变如下:

static late List<item> items

如果它们不起作用,则删除 final 关键字。

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
  • @Tomerikoo 如果课程是 Google 地图等图书馆的一部分,我该怎么办?尝试更新地图标记的图标值
猜你喜欢
  • 1970-01-01
  • 2021-12-04
  • 2014-02-24
  • 1970-01-01
  • 2021-07-15
  • 2019-05-19
  • 1970-01-01
  • 1970-01-01
  • 2020-08-27
相关资源
最近更新 更多