CupertinoPicker 无法从选定值返回文本

问题描述

我希望文本字段在选择时显示“A”/“B”/等,但是它返回索引“0”/“1”/“2”/...只是,为什么???

完整的小部件代码如下:

更新:

  int selectedValue;

  Future showPicker() async {
    showModalBottomSheet(
        context: context,builder: (BuildContext context) {
          return Cupertinopicker(
            backgroundColor: Colors.white,scrollController: FixedExtentScrollController(initialItem: 3),onselecteditemchanged: (value) {
              setState(() {
                if (value != null) {
                  selectedValue = listTextValues[value];
                  regionController.value = TextEditingValue(text: selectedValue.toString());
                }
              });
            },itemExtent: 32.0,children: const listTextValues = [
              Text('Eastern'),Text('South'),Text('West'),Text('north'),Text('Island'),],);
        }
        );

  }

下面的代码是可行的,只是想知道如何简化代码,因为我使用的是 2 个列表,一个用于选择器,一个用于映射索引

解决方案:

    int selectedValue;
  final List<String> listTextValues = ['Eastern','South','West','north','Island'];

  Future showPicker() async {
    showModalBottomSheet(
        context: context,onselecteditemchanged: (value) {
              setState(() {
                if (value != null) {
                  selectedValue = value;
                  regionController.value = TextEditingValue(text: listTextValues[selectedValue].toString());
                }
              });
            },children: const [
              Text('Eastern'),);
        }
        );

  }

解决方法

使用方法onSelectedItemChanged: (value),“值”是选定的索引。
您必须将字母列表存储在小部件中的变量中

const listTextValues = [
      Text('A'),Text('B'),Text('C'),Text('D'),Text('E'),];

并在 onSelectedItemChanged 实现中获取所选索引处的项目

selectedValue = listTextValues[value];

编辑

最终结果应该如下图

int selectedValue;
final List<Widget> listTextValues = [
              Text('Eastern'),Text('South'),Text('West'),Text('North'),Text('Island'),];

  Future showPicker() async {
    showModalBottomSheet(
        context: context,builder: (BuildContext context) {
          return CupertinoPicker(
            backgroundColor: Colors.white,scrollController: FixedExtentScrollController(initialItem: 3),onSelectedItemChanged: (value) {
              setState(() {
                if (value != null) {
                  selectedValue = listTextValues[value];
                  regionController.value = TextEditingValue(text: selectedValue.toString());
                }
              });
            },itemExtent: 32.0,children: listTextValues,);
        }
        );

  }

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...