从Firestore获取Flutter CupertinoPicker值



我一直在努力使用Flutter上的CupertinoPicker将值整数转换为字符串,我的代码看起来有点像:

class AddExerciseMuscleGroupPicker extends StatefulWidget {
const AddExerciseMuscleGroupPicker({Key? key}) : super(key: key);
@override
_AddExerciseMuscleGroupPickerState createState() => _AddExerciseMuscleGroupPickerState();
}
class _AddExerciseMuscleGroupPickerState extends State<AddExerciseMuscleGroupPicker> {
final Stream<QuerySnapshot> _usersStream = FirebaseFirestore.instance.collection('MuscleGroups').orderBy('MuscleGroupName').snapshots();
@override
Widget build(BuildContext context) {
return StreamBuilder<QuerySnapshot>(
stream: _usersStream,
builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
if (snapshot.hasError) {
return Text('Something went wrong');
}
if (snapshot.connectionState == ConnectionState.waiting) {
return Text("Loading");
}
return CupertinoPicker(
itemExtent: 30,
children: snapshot.data!.docs.map((DocumentSnapshot document) {
Map<String, dynamic> data = document.data()! as Map<String, dynamic>;
return Text(data['MuscleGroupName']);
}).toList(),
onSelectedItemChanged: (value) {
setState(() {
newExerciseMuscleGroupController.text = value.toString();
});
},
);
},
);
}
}

就目前而言,我可以创建";肌肉群";它们会出现在CupertinoPicker上,然而,一旦我选择了一个";肌肉群";,这将向TextEditingController返回一个整数,我的问题是,如何返回字符串而不是整数?如果这种方法是错误的,我很感激任何小的指导来解决这个问题。如果我得到的列表是";胸部"Abs"腿";,它返回"0";0"1〃"2〃;而不是";胸部"Abs";或";腿;

您可以设置snapshot.data![value]到controller.text.

//您不必包装controller.text在setState中的值更改。它会更新TextField。

最新更新