如何在 Dart 中将 Navigator 函数作为参数传递?

How to pass Navigator function as a parameter in Dart?

我有一个代表按钮的自定义小部件,这个小部件位于“lib”文件夹内一个名为“Widgets”的单独文件夹中,这就是按钮小部件文件

import 'package:flutter/material.dart';

Widget buttonWidget(String text, Function action) {
  return ElevatedButton(
    onPressed: () => action,
    child: Text(text, style: const TextStyle(fontSize: 20),
  );
}

现在在 main.dart 文件中,我希望 buttonWidget 使用 Navigator.pushNamed 函数,所以我将 buttonWidget 命名为

buttonWidget("Navigate", Navigator.pushNamed(context, '/screenTwo')),

但是 buttonWidget 调用给我这个错误

The argument type 'Future<Object?>' can't be assigned to the parameter type 'Function'.

您需要围绕该调用创建一个匿名函数,就像您将它直接传递给 onPressed 参数一样。

buttonWidget("Navigate", () => Navigator.pushNamed(context, '/screenTwo')),

buttonWidget("Navigate", () {
  Navigator.pushNamed(context, '/screenTwo');
}),