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

Posted

技术标签:

【中文标题】如何在 Dart 中将 Navigator 函数作为参数传递?【英文标题】:How to pass Navigator function as a parameter in Dart? 【发布时间】:2022-01-21 16:47:52 【问题描述】:

我有一个代表按钮的自定义小部件,该小部件位于“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'.

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

以上是关于如何在 Dart 中将 Navigator 函数作为参数传递?的主要内容,如果未能解决你的问题,请参考以下文章

如何在Dart中将列表转换为地图

Dart / Flutter:在没有上下文的页面之间导航(使用 Navigator)(所以没有 Navigator.push?)

为啥文本元素居中以及如何在 Dart 中将其与右侧对齐

如何在 Dart/flutter 中将视频文件分割成小块?

Camera Access如何在HTML和JS中工作?

如何在 Dart 中将数字格式化为千位分隔符