所选日期不显示在 textField 底部选择器中

Selected date don't show in the textField Bottom Picker flutter

我仍然是 Dart 和 flutter 的初学者 我正在尝试 Select 在表单中约会,并在选择时在文本字段中显示它,但是当我选择日期时没有任何显示

代码如下:

TextField(
                       controller: dateinput,
                       textAlign: TextAlign.center,
                       readOnly: true,
                      
                  
                  onChanged: (value) {
                    birth = value ;
                  },
                  
                  
                onTap: () async {
                  BottomPicker.date(
                    title:  "Set your Birthday",
                    titleStyle: TextStyle(
                        fontWeight: FontWeight.bold,
                        fontSize:  15,
                        color: Colors.teal
                    ),
                    onChange: (value) {
                        print(value);
                    },
                    onSubmit: (value) {
                        print(value);
                    },
                    bottomPickerTheme: BOTTOM_PICKER_THEME.plumPlate
                  ).show(context);
                  
                },

您目前正在打印您从 BottomPicker 选取的值。还尝试将控制器的文本设置为值:

onTap: () async {
      BottomPicker.date(
          title:  "Set your Birthday",
          titleStyle: TextStyle(
              fontWeight: FontWeight.bold,
              fontSize:  15,
              color: Colors.teal
          ),
          onChange: (value) {
            print(value);
            setState({
              dateinput.text = value.toString();
            });
          },
          onSubmit: (value) {
            print(value);
            setState({
              dateinput.text = value.toString();
            });
          },
          bottomPickerTheme: BOTTOM_PICKER_THEME.plumPlate
      ).show(context);
    }

既然你用的是控制器,就没必要setState。无论如何它都会显示在屏幕上。此外,您不需要同时覆盖 onSubmitonChange;根据您的需要,其中一个就足够了。

onTap: () => BottomPicker.date(
  title: "Set your Birthday",
  titleStyle: const TextStyle(
    fontWeight: FontWeight.bold,
    fontSize: 15,
    color: Colors.teal,
  ),
  onSubmit: (value) => controller.text = '$value',
).show(context),