我一直在努力使用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”、"1“、"2”,而不是“胸部”、"Abs“或”腿“。
发布于 2021-12-27 01:30:20
您可以将snapshot.data设置为controller.text。
//您不必将controller.text值更改包装在setState中。它更新TextField。
https://stackoverflow.com/questions/70490281
复制相似问题