Flutter Widget返回自定义回调中的值

问题描述 投票:0回答:1

我创建了自己的Widget,其中包含DatePicker,此处为代码:

class DatePicker extends StatelessWidget {
  final Icon icon;
  final DateTime initialDate;
  final ValueChanged<DateTime> onDateSelected;

  DatePicker({this.icon = const Icon(Icons.date_range), @required this.initialDate, this.onDateSelected});

  Future<Null> _selectDate(BuildContext context) async {
    final DateTime picked = await showDatePicker(context: context, initialDate: initialDate, firstDate: DateTime(2015, 8), lastDate: DateTime(2101));
    if (picked != null && picked != initialDate) {
      // TODO: return the picked value in the 'OnDateSelect' callback
      print(picked.toString());
    }
  }

  @override
  Widget build(BuildContext context) {
    return Row(
      children: <Widget>[
        Text(initialDate.toString()),
        IconButton(
          icon: this.icon,
          onPressed: () => _selectDate(context),
        )
      ],
    );
  }
}

我想这样使用它:

DatePicker(
      initialDate: _ticketDate,
      onDateSelected: (newDate) {
        print(newDate);
      },
    );

执行onDateSelected Future<Null>后,我不知道如何返回在自定义_selectDate回调中选择的日期。

有什么想法吗?

flutter dart callback widget
1个回答
0
投票

非常简单:

您要做的就是调用窗口小部件提供的函数并提供参数,在这种情况下,是选择的日期。

  Future<void> _selectDate(BuildContext context) async {
    final DateTime picked = await showDatePicker(
        context: context,
        initialDate: initialDate,
        firstDate: DateTime(2015, 8),
        lastDate: DateTime(2101));
    if (picked != null && picked != initialDate) {
      onDateSelected(picked); // just do this
    }
  }
© www.soinside.com 2019 - 2024. All rights reserved.