如何在不同的屏幕中使用相同的日期选择器?



我试图使用相同的函数,选择日期和时间在多个屏幕,是可以这样做吗?

我不能提取showDatePicker,因为它不是一个小部件。

这是我试图在多个屏幕中调用的方法是否有其他方法将代码复制到不同的屏幕上?我想这不是一个有效的方法,如果我改变一些东西,我必须在所有不同的地方改变它。

Future<void> _selectDateTime() async {
final pickedDate = await showDatePicker(
context: context,
initialDate: pickedDate,
firstDate: DateTime(2021),
lastDate: DateTime(2100),
builder: (BuildContext context, Widget child) {
return Theme(
data: ThemeData.light().copyWith(
colorScheme: ColorScheme.light(
primary: yellowLight,
onPrimary: Colors.white,
onSurface: blackTitle,
),
),
child: child,
);
},
);
final pickedTime = await showTimePicker(
context: context,
initialTime: TimeOfDay.now(),
builder: (BuildContext context, Widget child) {
return Theme(
data: ThemeData.light().copyWith(
colorScheme: ColorScheme.light(
primary: yellowLight,
onPrimary: Colors.white,
onSurface: blackTitle,
),
),
child: child,
);
},
);
setState(() {
//do something
});
}

把你的方法改成这样:

Future<DateTime> _selectDateTime(BuildContext context) async {
return showDatePicker(
context: context,
// ... other properties.
);
}

你可以在Screen-1中使用它:

void someMethod() async {
final dateTime = await _selectDateTime(context);
}

而在Screen-2中:

void someMethod2() async {
final dateTime = await _selectDateTime(context);
}

最新更新