在Dart中使用泛型会导致子类型错误

时间:2018-11-29 03:16:16

标签: dart flutter

我有一个通用类型的数据类,其中包含该类型的函数,定义如下:

class SettingsData<T> {
    // constructor
    final String label;
    final Widget Function(T) render;
    final Future<T> Function(BuildContext, T) tapAction;
}

然后我用它来生成一个小部件,如下所示:

Widget _settingsRow<T>(_SettingsData<T> data) {
    final baseWidget = Row(
        children: [
            Text(data.label),
            const Spacer(),
            data.render(),
        ],
    );
    return data.tapAction == null
        ? baseWidget
        : GestureDetector(
            behavior: HitTestBehavior.opaque,
            child: baseWidget,
            onTap: () async {
                var result = await data.tapAction(context, data.value);
                _setValue(data, result, shouldSave: true);
            },
        );
}

但是,每当我运行代码时,都会出现错误 type '(BuildContext, DateTime) => Future<DateTime>' is not a subtype of type '(BuildContext, Object) => Future<Object>'支票上的data.tapAction == null。我该如何解决这个问题?

0 个答案:

没有答案