子widget,定义ValueChanged
class ValueChangedUtils extends StatefulWidget {
final ValueChanged<int> controllerCallback;
const ValueChangedUtils({super.key, required this.controllerCallback});
@override
State<ValueChangedUtils> createState() => _ValueChangedUtilsState();
}
class _ValueChangedUtilsState extends State<ValueChangedUtils> {
@override
Widget build(BuildContext context) {
return ListView.builder(
itemCount: 10,
itemBuilder: (BuildContext context, int index) {
return GestureDetector(
onTap: () {
widget.controllerCallback(index);
},
child: const SizedBox(
width: 100,
height: 50,
),
);
});
}
}
父widget,接收ValueChanged传来的数据
class ValueChangedPage extends StatelessWidget {
const ValueChangedPage({super.key});
@override
Widget build(BuildContext context) {
return ValueChangedUtils(
controllerCallback: (int value) {
print("$value");
},
);
}
}