将回调传递给DropdownButton onChanged属性



我正在创建一个新的无状态小部件,以便以后重用

import 'package:flutter/material.dart';
class JumpDropdown extends StatelessWidget {
final int val;
final Function callback;
const JumpDropdown({Key? key, required this.val, required this.callback})
: super(key: key);
@override
Widget build(BuildContext context) {
return DropdownButton<int>(
value: val,
onChanged: (int? newValue) {},
);
}
}

然而,当我试图将callback传递给onChanged属性时,它不允许说The argument type 'Function' can't be assigned to the parameter type 'void Function(int?)?'.

return DropdownButton<int>(
value: val,
onChanged: callback,
);

我认为应该这样做:

class JumpDropdown extends StatelessWidget {
final int val;
final void Function(int?)? callback;
const JumpDropdown({Key? key, required this.val, required this.callback})
: super(key: key);
@override
Widget build(BuildContext context) {
return DropdownButton<int>(
value: val,
onChanged: callback,
);
}
}

如果您需要一个无参数回调,那么就不可能直接分配这样的回调。您将使用自定义函数。像这样:

class JumpDropdown extends StatelessWidget {
final int val;
final VoidCallaback callback;
const JumpDropdown({Key? key, required this.val, required this.callback})
: super(key: key);
@override
Widget build(BuildContext context) {
return DropdownButton<int>(
value: val,
onChanged: (int? v) => callback(),
);
}
}

相关内容

最新更新