【发布时间】:2022-02-06 21:06:57
【问题描述】:
我有这个函数来处理我的日期和时间选择器小部件......下面的代码......
Future selectDayAndTimeL(BuildContext context) async {
DateTime? selectedDay = await showDatePicker(
context: context,
initialDate: DateTime.now(),
firstDate: DateTime(2021),
lastDate: DateTime(2030),
builder: (BuildContext context, Widget? child) => child!);
TimeOfDay? selectedTime = await showTimePicker(
context: context,
initialTime: TimeOfDay.now(),
);
if (selectedDay != null && selectedTime != null) {
//a little check
}
setState(() {
selectedDateAndTime = DateTime(
selectedDay!.year,
selectedDay!.month,
selectedDay!.day,
selectedTime!.hour,
selectedTime!.minute,
);
// _selectedDate = _selectedDay;
});
// print('...');
}
最初它在我的添加新任务类/dart 文件“Stateful Widget”中,一切正常,但现在我想在按下按钮时在主屏幕上使用该功能。
然后我检查了how to call a function from another dart file 上的 StackOverflow 问题,该解决方案要求我将函数保存在不同的 dart 文件中,然后像这个示例一样从那里调用它
void launchWebView () {
print("1234");
}
当我这样做时,我得到了一个我查找的错误,这是因为我的函数中的“setState”所以我需要把它放在一个有状态的小部件中,
import 'package:flutter/material.dart';
class SelectDateAndTime extends StatefulWidget {
@override
_SelectDateAndTimeState createState() => _SelectDateAndTimeState();
}
class _SelectDateAndTimeState extends State<SelectDateAndTime> {
DateTime? _selectedDate;
// DateTime _selectedDate;
DateTime? selectedDateAndTime;
Future selectDayAndTimeL(BuildContext context) async {
DateTime? selectedDay = await showDatePicker(
context: context,
initialDate: DateTime.now(),
firstDate: DateTime(2021),
lastDate: DateTime(2030),
builder: (BuildContext context, Widget? child) => child!);
TimeOfDay? selectedTime = await showTimePicker(
context: context,
initialTime: TimeOfDay.now(),
);
if (selectedDay != null && selectedTime != null) {
//a little check
}
setState(() {
selectedDateAndTime = DateTime(
selectedDay!.year,
selectedDay!.month,
selectedDay!.day,
selectedTime!.hour,
selectedTime!.minute,
);
// _selectedDate = _selectedDay;
});
// print('...');
}
@override
Widget build(BuildContext context) {
// TODO: implement build
throw UnimplementedError();
}
}
这是我的代码与我遵循的示例的唯一区别,当我尝试调用该函数时仍然出现错误,并且我已经检查了与另一个 dart 文件/类中的 clling 函数相关的所有问题,但没有其中有 SetState,所以他们的解决方案对我不起作用
这是我只调用函数名称时遇到的错误 贝娄是我尝试打电话时遇到的错误
onPressed: () => selectedDateAndTime!.selectDayAndTimeL(),
我应该从这里做什么?
【问题讨论】:
标签: flutter dart flutter-layout dart-pub dart-null-safety