Forms 颤振-点击文本表单字段时显示对话框编号picker

Forms 颤振-点击文本表单字段时显示对话框编号picker,forms,flutter,dialog,Forms,Flutter,Dialog,问题很简单:我需要在表单字段中单击时显示。然后我需要将numberpicker值指定给字段 表单字段 final maxValue = new GestureDetector( onTap: () { print("entra"); _showDialog(context); }, child: TextFormField(

问题很简单:我需要在表单字段中单击时显示。然后我需要将numberpicker值指定给字段

表单字段

 final maxValue = new GestureDetector(
              onTap: () {
                print("entra");
           _showDialog(context);
              },
              child: TextFormField(
                  //controller: inputMaxValue,
                  decoration: InputDecoration(
                    hintText: DemoLocalizations.of(context).trans('value-meter-max'),
                    focusedBorder: UnderlineInputBorder(
                      borderSide: BorderSide(color: Colors.blue[300], width: 2.5),
                    ),
                  )),
            );
对话

  void _showDialog(context) {
    showDialog<double>(
    context: context,
      builder: (BuildContext context) {
        return new NumberPickerDialog.decimal(
          minValue: 1,
          maxValue: 10,
          title: new Text("Pick a new price"),
          initialDoubleValue: _currentPrice,
        );
      }
    ).then((double value) {
      if (value != null) {
        setState(() => _currentPrice = value);
      }
    });
  }
void\u显示对话框(上下文){
显示对话框(
上下文:上下文,
生成器:(BuildContext上下文){
返回新的NumberPickerDialog.decimal(
最小值:1,
最大值:10,
标题:新文本(“选择新价格”),
initialDoubleValue:\u currentPrice,
);
}
).然后((双值){
if(值!=null){
设置状态(()=>_currentPrice=value);
}
});
}

问题:单击时字段对话框未显示:单击此字段时如何启动showDialog?

我重新创建了您的案例,并注意到问题可能是由于使用了
TextFormField
造成的。理想情况下,
TextFormField
只应用于编辑文本,因为我们无论如何都要单击它,这将启用带有光标的字段。如果我们用
手势检测器
包装它,我们将尝试再次点击它,这可能与单击事件冲突。 我宁愿使用
InputDecorator
并用
GestureDetector
包装它。下面是一个打开对话框的工作示例:

  @override   Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
           child: GestureDetector(
               child: InputDecorator(
                 decoration: InputDecoration(
                     labelText: 'Test'
                 ),
               ),
             onTap: () {
                 _showDialog();
             },
           )
      )
      );

  }

  void _showDialog() {
    // flutter defined function
    showDialog(
      context: context,
      builder: (BuildContext context) {
        // return object of type Dialog
        return AlertDialog(
          title: new Text("Alert Dialog title"),
          content: new Text("Alert Dialog body"),
          actions: <Widget>[
            // usually buttons at the bottom of the dialog
            new FlatButton(
              child: new Text("Close"),
              onPressed: () {
                Navigator.of(context).pop();
              },
            ),
          ],
        );
      },
    );   }
@覆盖小部件生成(构建上下文){
返回脚手架(
正文:中(
儿童:手势检测器(
子:输入装饰器(
装饰:输入装饰(
labelText:“测试”
),
),
onTap:(){
_showDialog();
},
)
)
);
}
void_showDialog(){
//颤振定义函数
显示对话框(
上下文:上下文,
生成器:(BuildContext上下文){
//返回对话框类型的对象
返回警报对话框(
标题:新文本(“警报对话框标题”),
内容:新文本(“警报对话框正文”),
行动:[
//通常是对话框底部的按钮
新扁平按钮(
子项:新文本(“关闭”),
已按下:(){
Navigator.of(context.pop();
},
),
],
);
},
);   }