TextField-如何禁用键盘?

时间:2019-11-06 12:22:09

标签: flutter flutter-layout

如何在按下TextField时禁用弹出键盘? 我想改用DateTime选择器。

(DatePicker来自pub.dev)

这是我尝试过的:

TextField(
   onTap: (){
   SystemChannels.textInput.invokeMethod('TextInput.hide');
                    DatePicker.showDatePicker(context,
                          showTitleActions: true,
                          minTime: DateTime(1940, 1, 1),
                          maxTime: DateTime.now(), 
                          onConfirm: (date) {
                            birth=date;
                        print('confirm $birth');
                      }, currentTime: DateTime.now());
                  },
                ),

每当按下TextField时,键盘都会弹出一小段时间,之后将其替换为DatePicker。我希望使键盘完全不弹出。非常感谢。

3 个答案:

答案 0 :(得分:0)

如果不允许用户使用软键盘输入/编辑值,则可以将TextField小部件与{{3}结合使用,而不是Text }来打开GestureDetector

答案 1 :(得分:0)

只需在文本字段的enable属性中将InputDecoration属性设置为false

TextField(
  decoration: InputDecoration( enabled: false, ),
     onTap: (){
         SystemChannels.textInput.invokeMethod('TextInput.hide');
                DatePicker.showDatePicker(context,
                      showTitleActions: true,
                      minTime: DateTime(1940, 1, 1),
                      maxTime: DateTime.now(), 
                      onConfirm: (date) {
                        birth=date;
                    print('confirm $birth');
                  }, currentTime: DateTime.now());
              },
            ),

答案 2 :(得分:0)

只需不使用Textfield而是使用Container并将其与Gesture Detector打包在一起,并且在Container内将日期选择为Text

GestureDetector(
  onTap: (){
   DatePicker.showPicker(context, 
      showTitleActions: true,
      minTime: DateTime(1940, 1, 1),
      maxTime: DateTime.now(),
      onConfirm: (date){
       setState((){
         birth = date;
      });
     },
     currentTime: DateTime.now()
   );
  }
  child: Container(
     child: Text("$birth")
  )
)