【问题标题】:Flutter Widget return value in a custom callback自定义回调中的 Flutter Widget 返回值
【发布时间】:2019-12-09 23:48:20
【问题描述】:

我创建了自己的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);
      },
    );

我不知道的是,一旦执行了Future&lt;Null&gt; _selectDate,如何返回在我的自定义onDateSelected 回调中选择的日期。

有什么想法吗?

【问题讨论】:

    标签: flutter dart callback widget


    【解决方案1】:

    很简单:

    您只需调用小部件提供的函数并提供参数,在本例中为选择日期。

      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
        }
      }
    

    【讨论】:

    • 愚蠢的问题,我不知道我怎么没看到它......非常感谢!
    • 这不是一个愚蠢的问题,哈哈,而且这对其他人也有帮助。想想你是如何帮助许多人解决同样的问题的。
    • @Ale 一点也不。我们都是人,即使有经验我们也可能会忘记简单的事情。
    猜你喜欢
    • 1970-01-01
    • 2019-07-08
    • 2021-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多