【问题标题】:Set selected initial CupertinoPicker chosen index设置选定的初始 CupertinoPicker 选定索引
【发布时间】:2018-09-18 11:04:24
【问题描述】:

我是 Flutter 开发的新手,我正在尝试通过单击 CupertinoButton 触发的 showCupertinoModalPopup 内的 CupertinoPicker

选择Provinsi (Province)后,我可以通过再次点击按钮重新选择Province,但它应该是我选择的项目。

这是我的代码

showCupertinoModalPopup(
  context: context,
  builder: (_) {
    return new SizedBox(
    height: MediaQuery.of(context).size.height / 2,
    child: new CupertinoPicker(
      magnification: 1.2,
      useMagnifier: true,
      itemExtent: 32.0,
      onSelectedItemChanged: (i) => setState(() => _chosenProvince = listProvince[i]),
      children: r != null && listProvince != null ? listProvince.map((prov) {
      return new Padding(
        padding: const EdgeInsets.all(4.0),
        child: new Text(
        prov.name,
        textAlign: TextAlign.center,
        overflow: TextOverflow.ellipsis,
          style: new TextStyle(
          fontSize: 20.0,
        ),
      ),
    );
  }).toList(): [],),);});

是否有任何 initialValueCupertinoPicker 设置为?

【问题讨论】:

    标签: flutter cupertinopicker


    【解决方案1】:

    您可以使用FixedExtentScrollController 来设置initialValue。参考this

    【讨论】:

    • 超级!谢谢。
    • 我需要on tap value怎么实现?想象一下用户不滚动并直接点击该值。
    • @stuckedoverflow 你可以在 CupertinoPicker 孩子中返回 GestureDetector
    • 你的意思是initialItem?
    【解决方案2】:

    如 Dinesh Balasubramanian 所述,您可以使用 FixedExtentScrollController 设置 initialValue

    它看起来像这样,例如从第四个元素开始:

    showCupertinoModalPopup(
      context: context,
      builder: (_) {
        return new SizedBox(
        height: MediaQuery.of(context).size.height / 2,
        child: new CupertinoPicker(
          scrollController: FixedExtentScrollController(initialItem: 3),
          magnification: 1.2,
          useMagnifier: true,
          itemExtent: 32.0,
          onSelectedItemChanged: (i) => setState(() => _chosenProvince = listProvince[i]),
          children: r != null && listProvince != null ? listProvince.map((prov) {
          return new Padding(
            padding: const EdgeInsets.all(4.0),
            child: new Text(
            prov.name,
            textAlign: TextAlign.center,
            overflow: TextOverflow.ellipsis,
              style: new TextStyle(
              fontSize: 20.0,
            ),
          ),
        );
      }).toList(): [],),);});
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多