我如何从listview.builder
获取一个值和该开关的持有者的ID,我想进行一个Firebase集合,该值将被存储,并使该工作有效,我制作了一个容纳名称和switch
的容器,一个listview.builder
列出所有文档,因此当我按Submit button
时,它将提交所有开关值及其ID
这是listview.builder
Column(
children: [
Expanded(
child: ListView.builder(
itemCount: posts.length,
itemBuilder: (context, index) {
return Padding(
padding: const EdgeInsets.all(8.0),
child: Container(
child: Padding(
padding: const EdgeInsets.fromLTRB(6, 3, 8, 3),
child: Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Switch(value: null, onChanged: null),
Text(posts[index].data()["fname"])),
],
),
),
),
);
},
),
),
RaisedButton.icon(
label: Text('Submit', style: TextStyle(color: Colors.white),),
onPressed: () {},
),
],
),
最佳答案
您可以使用映射来跟踪build方法之外的开关的当前状态。使用post.data()[“fname”]作为键
var switchStates = {};
@override
void initState() {
super.initState();
for (var post in posts) {
switchStates[post.data()["fname"]] = false;
}
}
void onSwitchChanged(var key, var newValue)
{
switchStates[key] = newValue;
}
然后在listView上 Switch(value: null, onChanged: (value) => onSwitchChanged(posts[index].data()["fname"], value);)
最后,您可以使用switchStates映射访问ID和值。var keys = switchStates.keys;
var values = switchStates.values; //Use them in onPressed
关于flutter - Flutter-如何在lisviw生成器中获取ID列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64561922/