gpt4 book ai didi

flutter - 如何设置一个日期选择器选择的日期是 flutter 另一个日期选择器的第一日期

转载 作者:行者123 更新时间:2023-12-03 03:24:28 28 4
gpt4 key购买 nike

我有两个日期选择器字段契约(Contract)开始日期和契约(Contract)结束日期。当我选择契约(Contract)开始日期时,将选择第一个日期选择器的日期作为契约(Contract)结束日期的初始值或第一个日期。

在这里,我有两个日期选择器的代码。

  Widget _buildContractBeginDate() {
return DateTimeField(
format: format,
autocorrect: true,
autovalidate: false,
controller: _contractBeginDate,
readOnly: true,
validator: (date) => (date == null || _contractBeginDate.text == '')
? 'Please enter valid date'
: null,
decoration: InputDecoration(
labelText: "Contract Begin Date",
hintText: "Contract Begin Date",
prefixIcon: Icon(
FontAwesomeIcons.calendar,
size: 24,
)),
onShowPicker: (context, currentValue) {
return showDatePicker(
context: context,
firstDate: DateTime(1900),
initialDate: currentValue ?? DateTime.now(),
lastDate: DateTime(2022),
);
},
);
}

Widget _buildContractEndDate() {
return DateTimeField(
format: format,
autocorrect: true,
autovalidate: false,
controller: _contractEndDate,
readOnly: true,
validator: (date) => (date == null || _contractEndDate.text == '')
? 'Please enter valid date'
: null,
decoration: InputDecoration(
labelText: "Contract End Date",
hintText: "Contract End Date",
prefixIcon: Icon(
FontAwesomeIcons.calendar,
size: 24,
)),
onShowPicker: (context, currentValue) {
return showDatePicker(
context: context,
firstDate: DateTime(1900),
initialDate: currentValue ?? DateTime.now(),
lastDate: DateTime(2022));
},
);
}

最佳答案

我创建了一个与您的演示有些相似的演示,请引用:

TL; DR:使用ValueNotifier<DateTime>并从第一个日期选择器更新其值,并始终使用该通知程序的值作为第二个日期选择器的第一个日期。这样,您将始终获得更新的日期。

Run code on Dartpad

import 'package:flutter/material.dart';

void main() {
runApp(
MaterialApp(home: MyApp()),
);
}

class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> with SingleTickerProviderStateMixin {
ValueNotifier<DateTime> _dateTimeNotifier = ValueNotifier<DateTime>(DateTime.now());
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('Demo')),
body: Column(
children: <Widget>[
_buildContractBeginDate(context, _dateTimeNotifier),
_buildContractEndDate(context, _dateTimeNotifier),
],
),
);
}
}

Widget _buildContractBeginDate(BuildContext context, ValueNotifier<DateTime> _dateTimeNotifier) {
return RaisedButton(
child: Text('Begin Date'),
onPressed: () => showDatePicker(
context: context,
firstDate: DateTime(1900),
initialDate: _dateTimeNotifier.value,
lastDate: DateTime(2022),
).then((DateTime dateTime) => _dateTimeNotifier.value = dateTime),
);
}

Widget _buildContractEndDate(BuildContext context,ValueNotifier<DateTime> _dateTimeNotifier) {
return RaisedButton(
child: Text('End Date'),
onPressed: () {
return showDatePicker(
context: context,
firstDate: _dateTimeNotifier.value,
initialDate: _dateTimeNotifier.value ?? DateTime.now(),
lastDate: DateTime(2022));
},
);
}

enter image description here

希望对您有所帮助,如有任何疑问,请发表评论。

关于flutter - 如何设置一个日期选择器选择的日期是 flutter 另一个日期选择器的第一日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59333363/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com