【问题标题】:ListView not updateListView 不更新
【发布时间】:2020-09-10 20:07:21
【问题描述】:

void gerarLista 在 var List listaNumeros 中输入一些值。由于某种原因,当列表被写入时,屏幕没有更新。

当我在旅途中更改代码中的某些内容并保存时,重新设计的列表会带来信息。

var sequencia = [];
var numeroInicialController = TextEditingController();
var dddController = TextEditingController();
var quantidadeController = TextEditingController();

void gerarLista(int numeroInicial, int ddd, int quantidade) {
  print(numeroInicial.toString());
  print(ddd.toString());
  print(quantidade.toString());

  for (var i = numeroInicial; i <= (numeroInicial + quantidade); i++) {
    sequencia.add(i);
  }

  var cod = 1;
  //listaNumeros.clear();
  for (var numero in sequencia) {
    listaNumeros.add(Numero(numero.toString(), ddd.toString(), cod.toString()));
    cod++;
  }
  print(sequencia);
}

class _MessengerApp extends State<MessengerApp> {
  @override
  Widget build(BuildContext context) {
    //var listaNumeros = new List<int>.generate(quantidade, (numeroInicial) => numeroInicial + 1);

    return MaterialApp(
        home: Scaffold(
      appBar: AppBar(
        title: Text('JW Messenger'),
        actions: <Widget>[
          Padding(
              padding: EdgeInsets.only(right: 20.0),
              child: GestureDetector(
                onTap: () {
                  _showDialog();
                },
                child: Icon(Icons.more_vert),
              )),
        ],
      ),
      body: (ListView(
        children: <Widget>[
          ...listaNumeros,
        ],
      )),
    ));
  }```



【问题讨论】:

  • 你的listaNumeros在哪里声明,你在哪里调用函数gerarLista在你的代码中?

标签: listview flutter widget


【解决方案1】:

您需要提供更多代码,以便我们了解发生了什么,目前我无法看到您在哪里调用setState()

您需要调用 setState() 才能在 Flutter 中触发重建。

此外,屏幕上的列表通常不会更新,当这种情况发生时,您需要使用 Keys,查看 Flutter 中的 Keys 以及它们如何用于识别框架的新小部件和更新的小部件。

【讨论】:

  • 真相。我放了 SetState 并更新了界面。谢谢!
猜你喜欢
  • 1970-01-01
  • 2015-07-08
  • 1970-01-01
  • 2015-12-29
  • 2011-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多