如何在 flutter 的日期选择器中使用 readonly 属性

How to use readonly property in date picker in flutter

提问人:Samruddhi Chavan 提问时间:11/6/2023 最后编辑:Vivek ChibSamruddhi Chavan 更新时间:11/8/2023 访问量:49

问:

我正在尝试在日期选择器中使用只读属性,但无法这样做。

Future<void> SelectSpouseDOB(BuildContext context) async {
    DateTime? pickedDate = await showDatePicker(
      context: context,
      initialDate: DateTime.now(),
      firstDate: DateTime(1970),
      lastDate: DateTime(2101),
      builder: (BuildContext context, Widget? child) {
        return Theme(
          data: ThemeData.dark().copyWith(
            // Customize the color scheme
            colorScheme: ColorScheme.dark(
              primary: Color.fromARGB(
                  255, 250, 174, 52), // Header and selected day color
              onPrimary: Color.fromARGB(255, 247, 244,
                  244), // Header text and selected day text color
              surface: const Color.fromARGB(
                  255, 171, 2, 58), // Calendar background color
              onSurface: Color.fromARGB(255, 12, 12, 12), // Calendar text color
            ),
            dialogBackgroundColor: Color.fromARGB(
                255, 231, 142, 142), // Background color of the dialog
          ),
          child: child!,
        );
      },
    );

if (pickedDate != null) {
  // Format the pickedDate as "dd,MM,yyyy"
  final formattedDate = DateFormat('dd-MM-yyyy').format(pickedDate);
  spousedateOfBirthController.text = formattedDate;
 }
}

我想在那里添加readOnly属性。用户应该注意能够写任何字母

flutter date datepicker 依赖 flutter-dependencies

评论

0赞 Abdallah A. Odeh 11/6/2023
请先正确格式化您的问题

答:

0赞 Abdallah A. Odeh 11/6/2023 #1

您的问题需要格式正确,

我假设 ur 附加到 ,您需要将属性设置为该属性,以便您的代码变为:spousedateOfBirthControllerTextFieldreadOnlyTextField

TextField(
  controller: spousedateOfBirthController,
  readOnly: true,
),

您可以使用该属性打开日期选择器弹出窗口 或将 & 括在 & 中,如下所示:onTapTextFieldGestureDetectorAbsorbPointer

GestureDetector(
  onTap: (){
    //open your popup
  },
  child: AbsorbPointer(
    child: TextField(
      controller: spousedateOfBirthController,
      readOnly: true,
    ),
  ),
);