Home > Software engineering >  Flutter - Future<void> can not be assigned to the parameter type Future<void> Function()
Flutter - Future<void> can not be assigned to the parameter type Future<void> Function()

Time:07-22

I guess I am blind, but I can not see the problem... Maybe someone can help me.

The Problem is in this line "onRefresh: updateData()" and the full message is "The argument type 'Future' can't be assigned to the parameter type 'Future Function()'."

late Future<DocumentSnapshot> dataFuture;

Future<void> updateData() async {
  setState(() {
    dataFuture = getData();
  });
}

@override
Widget build(BuildContext context) {
  return Scaffold(
    body: RefreshIndicator(
      onRefresh: updateData(),
      ...

CodePudding user response:

I think the problem is that you're calling the function rather than providing it as an argument - should be just updateData rather than updateData().

onRefresh expects a callback (a function) which would then be executed upon a refresh event. Here dart is telling you that you are providing the wrong argument type - a Future (the result of calling updateData) instead of a function.

CodePudding user response:

If you want to use async and await then,

Replace,

onRefresh: updateData(),

To,

 onRefresh: () async {
   await updateData();
    },

CodePudding user response:

onRefresh: () async {
          updateData();
          return Future.delayed(const Duration(seconds: 1));
        }

void updateData() async {
  setState(() {
    dataFuture = getData();
  });
}
  • Related