Вызов функции future <null> из ontap inkwell

Я создал InkWell с вызовом функции onTap как таковой

new InkWell(onTap: _handleSelectedDate,
            ...
           )

Handle _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 и данные моей модели страниц. Как только я это сделаю, я получаю следующую ошибку сборки.

error: The argument type '(BuildContext, AppModel) → Future<Null>' 
can't be assigned to the parameter type '() → void'. 

Я не знаю, как это решить. Мне просто нужен способ передать данные в вызов, чтобы я мог ссылаться на данные моей модели (я экспериментирую с scoped_model)

2
0
1 243
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы можете завершить свой звонок закрытием

new InkWell(
  onTap: () => _handleSelectedDate(context, myModel),
)

Правильный способ назвать будущее -

new InkWell(
  onTap: () async => await _handleSelectedDate(context, myModel),
)

Хороший ответ для будущего метода

TuGordoBello 06.07.2020 02:36

Другие вопросы по теме