微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

CupertinoPicker 无法从选定值返回文本

如何解决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,);
        }
        );

  }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?