即使在setState((){})中变量也不会更新

时间:2020-09-17 20:48:54

标签: flutter dart

我正在为用户的电话联系人创建一个搜索栏。我正在使用FutureBuilder的{​​{1}}在snapshot中显示数据。

下面是我的ListView方法的代码,该方法调用build()来呈现由_getList()构建的联系人列表:

FutureBuilder

包含 @override Widget build(BuildContext context) { return Container( decoration: ContactListStyles.containerDecor, child: Column( children: [ if (widget.isSearchable) TextField( decoration: ContactListStyles.searchInput, onChanged: _inputHandler, ), Scrollbar(child: _getList()) ], ), ); } 的{​​{1}}的代码:

_getList()

现在FutureBuilder函数正在创建实际的问题。 Widget _getList() { return FutureBuilder( future: _contactsFuture, builder: (ctx, snapshot) { if (snapshot.connectionState == ConnectionState.waiting) { return Loader(); } else { ... // If searching then, even build() fn run, this line won't so that only filtered elements are displayed if (!_isSearching) { list = snapshot.data.toList(); } print(list.length); // For first time it renders 129 (total contacts in my phone) return Container( child: ListView.separated( separatorBuilder: (_, __) => Divider(), itemCount: list.length, itemBuilder: (ctx, index) { return ListTile( title: _generateTitle(list[index].displayName), subtitle: Text(list[index].phones.toList()[0].value), ... ); }, ), ); } }, ); } 工作正常,但是当我再次将过滤后的输出分配给_inputHandler变量时,在.where(() => condition)函数中也是如此。 list仍然记录 129 个数字。

我的整个有状态Widget类的代码:

setState((){})

0 个答案:

没有答案