我已经创建了一个带有onTap函数调用的InkWell
new InkWell(onTap: _handleSelectedDate,
...
)
句柄_handleSelectedDate被定义为Future,如下所示
Future<Null> _handleSelectedDate(BuildContext context, AppModel model) async {
var endYear = new DateTime.now().year + 10;
var startYear = new DateTime.now().year - 100;
DateTime picked = await showDatePicker(
context: context,
initialDate: model.trackDate,
firstDate: new DateTime(startYear, 1),
lastDate: new DateTime(endYear));
if (picked != null) {
if (picked != model.trackDate) {
model.setTrackDate(picked);
}
}
}
如果我在没有参数的情况下调用_handleSelectedDate,则调用有效,但我需要能够将BuildContext和我的Pages模型数据传递给它。一旦我这样做,我得到以下构建错误。
error: The argument type '(BuildContext, AppModel) → Future<Null>'
can't be assigned to the parameter type '() → void'.
我不知道如何解决这个问题。我只需要一种方法将数据传递给调用,以便我可以引用我的模型数据(我正在尝试使用scoped_model)
答案 0 :(得分:2)
你可以将你的电话包裹在一个闭包
中new InkWell(
onTap: () => _handleSelectedDate(context, myModel),
)
答案 1 :(得分:2)
呼唤未来的正确方法是
new InkWell(
onTap: () async => await _handleSelectedDate(context, myModel),
)