1

我在 Streambuilder 中运行单选按钮小部件,但在进行选择时所选选项没有变为活动状态,为什么?当我想按字符串值进行选择时,我遇到了这个问题。在这种情况下,我做错了什么?拉 你能帮忙吗?

StreamBuilder<QuerySnapshot>(
              stream:...
              builder: (context, snapshot) {
             ....
                    return buildBody(context, snapshot.data.docs);
                }
              },
            )      

Widget buildBody(BuildContext context, List<DocumentSnapshot> snapshot) {
        return ListView(
            padding: EdgeInsets.only(top: 20),
            children:
                snapshot.map<Widget>((e) => buildListItem(context, e)).toList());
      }

  Widget buildListItem(BuildContext context, DocumentSnapshot data) {
    final row = Survey.fromSnapshot(data);
    String _value = '';

    return Padding(
        padding: EdgeInsets.all(10),
        key: ValueKey(row.name),
        child: Container(
          decoration:.....
          child: ListTile(
            title: .....
            leading: Radio<String>(
              activeColor: Colors.blueGrey,
              groupValue: _value,
              value: row.name,
              onChanged: (value) {
                setState(() {
                  _value = value;
                });
              },
            ),
            onTap: () {
              FirebaseFirestore.instance.runTransaction((transaction) async {
                final freshSnapShot = await transaction.get(row.reference);
                final fresh = Survey.fromSnapshot(freshSnapShot);

                await transaction.update(
                    row.reference, {'isim': row.name, 'oy': row.vote + 1});
              });
            },
          ),
        ));
  }
}
4

2 回答 2

0

我认为变量的类型存在差异。_value 是一个字符串,但 onChange: (value) {} 返回你输入布尔值..所以请仔细研究一下,如果有帮助,请点赞:')

于 2022-01-18T19:19:13.767 回答
0

声明你String _value = '';在你的构建函数之外,现在每次你setState你的_value将被设置为一个空字符串而不是你想要的值。

于 2022-01-18T23:14:58.910 回答