【发布时间】:2021-05-23 21:48:20
【问题描述】:
我在 Flutter Web 应用程序中有以下 Dart 代码,其中包含一个 TextFormField,它假设显示一个日期选择器供受访者选择日期。代码编译得很好,但是当应用程序运行时从浏览器中单击日期字段时,没有任何反应,没有显示日期选择器。我错过了什么或做错了什么?
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
class DateQuestionCard extends StatelessWidget {
DateQuestionCard({
@required this.question,
@required this.validationInfo,
this.isRequired = false,
this.inputFormatters,
this.keyboardType,
this.controller,
});
String? question = '';
String? validationInfo = '';
bool isRequired;
List<TextInputFormatter>? inputFormatters;
TextInputType? keyboardType;
TextEditingController? controller;
@override
Widget build(BuildContext context) {
return Container(
padding: const EdgeInsets.all(25),
margin: EdgeInsets.all(10),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(10),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(question!),
SizedBox(
height: 10,
),
// The date picker
TextFormField(
controller: controller,
decoration: InputDecoration(
hintText: "Insert your date of birth",
hintStyle: TextStyle(
color: Colors.grey[400],
fontStyle: FontStyle.italic,
),
),
onTap: () async {
DateTime? date = DateTime(1980);
FocusScope.of(context).requestFocus(FocusNode());
date = await showDatePicker(
context: context,
initialDate: DateTime.now(),
firstDate: DateTime(1980),
lastDate: DateTime(2005),
);
controller!.text = date!.toIso8601String();
},
validator: (value) {
if ((value == null || value.isEmpty) && isRequired) {
return validationInfo;
}
return null;
},
),
],
),
);
}
}
【问题讨论】: