Я вызвал функцию showDatePicker для использования на экране регистрации. Поскольку я писал с помощью getx, я использовал obs для мгновенного отображения выбранного значения, но столкнулся с ошибкой, как показано ниже.
«тип Rx не является подтипом типа DateTime в приведенном типе».
class RegisterScreen extends GetWidget<RegisterController> {
RegisterScreen({Key? key}) : super(key: key);
static const routeName = "/register_screen";
DateTime _selectedDate = DateTime.now().obs as DateTime;
late BuildContext _context;
Obx(() => GestureDetector(
onTap: (() async {
var initialDate = DateTime.now();
_selectedDate = await showDatePicker(
context: context,
initialDate: initialDate,
firstDate: DateTime(1930),
lastDate: DateTime(2100),
) ??
_selectedDate;
print(_selectedDate.toIso8601String());
}),
child: Card(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(16),
),
child: Padding(
padding: const EdgeInsets.all(12.0),
child: Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
const Icon(
FontAwesomeIcons.calendar,
size: 30,
),
Expanded(
child: Text(
DateFormat("EEE,MMM d")
.format(_selectedDate),
textAlign: TextAlign.center,
),
),
],
),
),
),
)),
Вам нужно изменить это:
DateTime _selectedDate = DateTime.now().obs as DateTime;
К этому:
var _selectedDate = DateTime.now().obs;
И везде используйте значение _selectedDate следующим образом:
_selectedDate.value
Проверьте это , чтобы узнать больше о GetX.